#3 Reopening类和实例

来源:互联网 发布:oneinstack java 编辑:程序博客网 时间:2024/06/05 01:55

英文原版: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 classPerson.reopenClass({  isPerson: false});// override property of existing and future Person instancesPerson.reopen({  isPerson: true});Person.isPerson; // false - because it is static property created by `reopenClass`Person.create().get('isPerson'); // true

本节完

原创粉丝点击