返回介绍

对象模型 - 重新打开类和实例

发布于 2020-02-21 15:48:02 字数 1073 浏览 981 评论 0 收藏 0

英文原文:http://emberjs.com/guides/object-model/reopening-classes-and-instances/

Ember.js的类不需要一次性完成所有的定义。可以通过reopen方法重新打开一个类来定义新的属性。

1
2
3
4
5
Person.reopen({
  isPerson: true
});

Person.create().get('isPerson') // true

当使用reopen时,还可以重写已有的方法。在重写的方法中可以通过this._super来调用被重写的方法。

1
2
3
4
5
6
Person.reopen({
  // 在末尾加 ! 来重载 `say`
  say: function(thing) {
    this._super(thing + "!");
  }
});

reopen用来添加被所有类的实例共享的实例方法和属性。它不能像Vanilla Javascript那样,用来为某一特定的实例来添加方法和属性(不使用prototype)。

但是如果需要为类添加方法和属性,则可以使用reopenClass方法。

1
2
3
4
5
6
7
Person.reopenClass({
  createMan: function() {
    return Person.create({isMan: true})
  }
});

Person.createMan().get('isMan') // true

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文