ES5中模拟静态成员和ES6类中的静态成员
ES5中直接将方法添加到构造函数中来模拟静态成员是一种常见的模式。
function PersonType(name){ this.name = name; } //静态方法 PersonType.create = function(name){ return new PersonType(name); }; //实例方法 PersonType.prototype.sayName = function(){ console.log(this.name) }; var person = PersonType.create('zoe');
由于PersonType.create()使用的数据不依赖PersonType的实例,其会被认为是一个静态方法。
ES6类语法创建了静态成员,只需要在方法或访问器属性名前使用静态注释即可。
class PersonClass { //等价于PersonType构造函数 constructor(name){ this.name = name } //等价于PersonType.prototype.sayName sayName(){ console.log(this.name) } //等价于PersonType.create static create(name){ return new PersonClass(name); } } let person = PersonClass.create('zoe'); //不可在实例中访问静态成员,必须要直接在类中访问静态成员,所以是PersonClass.create()
静态成员继承:如果基类有静态成员,这些静态成员在派生类中也可以使用。
class ChildClass extends PersonClass{ constructor(name){ super(name); } } var child = ChildClass.create('jayce');
前端问题总结 文章被收录于专栏
总结一些前端常见的面试笔试题,来和大家分享鸭