#3 Reopening类和实例

xiaoxiao2021-02-28  115

英文原版:https://guides.emberjs.com/v2.13.0/object-model/reopening-classes-and-instances/

你不必非要一次把类定义完整。你可以通过reopen()方法再次开启类并且定义新的属性:

Person.reopen({ isPerson: true }); Person.create().get('isPerson'); // true

当你使用reopen()时,这时候你可以覆写已经存在方法,并且可以调用this._super():

Person.reopen({ // override `say` to add an ! at the end say(thing) { this._super(thing + '!'); } });

reopen()用来添加实例方法和属性,并且可以在所有的实例中使用。【注】 在vanilla JavaScript 中这个无效。

当你打算添加一个对类有效的静态方法或属性的时候,你应该使用reopenClass():

// add static property to class Person.reopenClass({ isPerson: false }); // override property of existing and future Person instances Person.reopen({ isPerson: true }); Person.isPerson; // false - because it is static property created by `reopenClass` Person.create().get('isPerson'); // true

本节完

转载请注明原文地址: https://www.6miu.com/read-30177.html

最新回复(0)