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 方法,即对输入进行处理再得到一个输出,与对象的成员无关。这类方法也可以直接写为公共函数(非方法函数)。