1. 你不需要一开始定义一个类的全部内容,你可以通过使用reopen方法重新打开一个类并定义新的属性。
Person.reopen({ isPerson: true }); Person.create().get('isPerson') //true
2. 当使用reopen时,你也可以重写已经存在的方法并且调用this._super。
Person.reopen({ //override 'say' to add an ! at the end say: function (thing) { this._super(thing + "!"); } });
3. reopen被用来增加一个类的所有实例所共享的实例方法和属性,在vanilla JS中(不使用原型)中它不添加指定类的实例方法和属性。
4. 当你需要为类自身添加一个静态的方法或者静态的属性时,你可以使用reopenClass。
//add static property to class Person.reopenClass({ isPerson: false }); //override property of Person instance Person.reopen({ isPerson: true }); Person.isPerson: // false - because it is static property created by 'reopenClass' Person.create().get("isPerson");//true