HuangHongRui / Notebook

:pencil2: Yeah.. This's My NoteBook...:closed_book:
0 stars 0 forks source link

Es6_Javascript中的类 [静态成员] #26

Open HuangHongRui opened 7 years ago

HuangHongRui commented 7 years ago

在 ES5 和早期版本.. 直接将方法添加到构造函数中来模拟静态成员是一种常见的模式..

HuangHongRui commented 7 years ago
//早期版本
function PersonType (name) {
    this.name = name
}
//静态方法
PersonType.create = function(name) {
    return new PersonType( name );
};
//实例方法
PersonType.prototype.sayName = function() {
    console.log(this.name)
}
let person = PersonType.create("Raine")
HuangHongRui commented 7 years ago

Es6 简化了 创建静态成员的过程.. 在方法或访问器属性名前使用正式的静态注释 (static) 即可

HuangHongRui commented 7 years ago
class PersonClass{
    constructor(name) {
        this.name = name
    }
    sayName(name) {
        console.log( name )
    }
    static create(name) {
        return new PersonClass(name)
    }
}
let person = PersonClass.create('Raine')
HuangHongRui commented 7 years ago

PersonClass 定义只有一个静态方法 create() .. 它的语法与sayName() 的区别只在于是否使用 static 关键字..

类中的所有方法和访问器属性都可以用 static 关键字来定义.. 唯一的限制是不能将 static 用于定义构造函数方法..