es6 面向对象

 1      class Student {
 2         constructor(name,age) {
 3               this.name = name;
 4               this.age = age;
 5         }
 6         init(){
 7               console.log(this.name,this.age)
 8         }
 9     }
10     let p = new Student('张三','14');
11     p.init();

上面代码是实例化方法

下面代码是静态方法(静态方法不能通过实例化方法调用,会报TypeError: p.init is not a function)

 1     class Student {
 2 //        constructor(name,age) {
 3 //              this.name = name;
 4 //              this.age = age;
 5 //        }
 6         static init(_name,_age){
 7               console.log(_name,_age)
 8         }
 9     }
10     Student.init('张三','14');

 1,静态方法通过 static 关键字声明,基于类名调用。
 2,为什么使用静态方法:阻止方法被实例继承,类的内部相当于实例的原型,所有在类中直接定义的方法相当于在原型上定义方法,都会被类的实例继承,但是使用static静态方法定义的不会被实  例继承
3,静态方法中this指向:this指向类而不是类的实例,就像object.d = d
缺点:老写法的静态属性定义在类的外部。整个类生成以后,再生成静态属性。容易忽略
除此之外,不需要访问类属性的方法都可以写成静态的,这类方法一般都是 Helper 方法,即对输入进行处理再得到一个输出,与对象的成员无关。这类方法也可以直接写为公共函数(非方法函数)。

 

posted @ 2019-03-27 16:52  小慕白  阅读(156)  评论(0编辑  收藏  举报