【问题标题】:emberjs Computed Propertiesemberjs 计算属性
【发布时间】:2012-06-01 08:34:23
【问题描述】:

在 emberjs 文档 http://emberjs.com/documentation/#toc_computed-properties-getters 中,说有两种方法可以定义计算属性。第一个是通过原型扩展,第二个是将函数包装在对Ember.computed 的调用中。

谁能告诉我它们之间的区别是什么,如果一种方法比另一种更好,因为在示例代码中没有明显的区别(或者我遗漏了什么?)

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    这两种变体之间没有区别 - 除了Ember.computed 方法更冗长。事实上,property 变体内部调用了Ember.computed,请参见function.js 中的定义。

    packages/ember-runtime/lib/ext/function.js

    Function.prototype.property = function() {
        var ret = Ember.computed(this);
        return ret.property.apply(ret, arguments);
    };
    

    【讨论】:

      【解决方案2】:

      我想最后没有。如前所述,如果您不喜欢扩展的Function 原型,可以使用Ember.computed。也可能对元编程有用。

      【讨论】: