在 emberjs 文档http://emberjs.com/documentation/#toc_computed-properties-getters中,说有两种方法可以定义计算属性。第一种是通过原型扩展,第二种是通过将函数包装在对Ember.computed
.
谁能告诉我它们之间的区别是什么,如果一种方法比另一种更好,因为在示例代码中没有明显的区别(或者我遗漏了什么?)
在 emberjs 文档http://emberjs.com/documentation/#toc_computed-properties-getters中,说有两种方法可以定义计算属性。第一种是通过原型扩展,第二种是通过将函数包装在对Ember.computed
.
谁能告诉我它们之间的区别是什么,如果一种方法比另一种更好,因为在示例代码中没有明显的区别(或者我遗漏了什么?)
两种变体之间没有区别 - 除了Ember.computed
方法更冗长。实际上,property
变体内部调用Ember.computed
,请参见function.js中的定义。
包/ember-runtime/lib/ext/function.js:
Function.prototype.property = function() {
var ret = Ember.computed(this);
return ret.property.apply(ret, arguments);
};
我想最后没有。如前所述,Ember.computed
如果您不喜欢Function
扩展原型,您可以使用。也可能对元编程有用。