属于类所独有的
特点:通过类名去调用

  1. class Person{
  2. constructor(name,age){
  3. this.name = name;
  4. this.age = age;
  5. }
  6. static sayName(){
  7. console.log("name");
  8. }
  9. }
  10. var p = new Person("zhou",22);
  11. Person.sayName()

静态方法和普通方法的关系

1.在普通方法中能调用静态方法
2.在静态方法中不能调用普通方法

  1. // 1.在普通方法中能调用静态方法
  2. // 2.在静态方法中不能调用普通方法
  3. class Person{
  4. constructor(name,age){
  5. this.name = name;
  6. this.age = age;
  7. }
  8. sayAge(){
  9. person.sayName();
  10. console.log(this.age);
  11. }
  12. static sayName(){
  13. this.sayAge();
  14. console.log("name");
  15. }
  16. }
  17. var p = new Person("name",22)
  18. person.sayAge()

this

1.静态方法:静态方法是属于类所独有的,类创建的时候,就会在内存中存在。不用实例化,
直接通过类名直接调用,不会造成系统资源的格外浪费
2.不能在静态方法中调用普通方法
3.静态方法中的this,指调用静态方法的这个类
4.静态方法是可以被继承的
在静态方法this指—>调用静态方法的类

  1. /*
  2. 1.静态方法:静态方法是属于类所独有的,类创建的时候,就会在内存中存在。不用实例化,
  3. 直接通过类名直接调用,不会造成系统资源的格外浪费
  4. 2.不能在静态方法中调用普通方法
  5. 3.静态方法中的this,指调用静态方法的这个类
  6. 4.静态方法是可以被继承的
  7. */
  8. //在静态方法this指-->调用静态方法的类
  9. class Person{
  10. constructor(name,age){
  11. this.name = name;
  12. this.age = age;
  13. }
  14. sayAge(){
  15. person.sayName();
  16. console.log(this.age);
  17. }
  18. static sayName(){
  19. console.log(this);
  20. console.log("name");
  21. }
  22. }
  23. Person.sayName()

静态方法和继承

1.子类可以继承父类的静态方法
2.在子类的静态方法中调用父类的静态方法,可以通过super/this去调用

  1. /*
  2. 1.子类可以继承父类的静态方法
  3. 2.在子类的静态方法中调用父类的静态方法,可以通过super/this去调用
  4. */
  5. class Person{
  6. static baseUrl = "https://www.baidu.com"
  7. static sayName(){
  8. console.log("name");
  9. }
  10. }
  11. class Teacher extends Person{
  12. static sayAge(){
  13. super.sayName();
  14. console.log(super.baseUrl);
  15. console.log("age");
  16. }
  17. }
  18. Teacher.sayName()
  19. console.log(Person.baseUrl)