【发布时间】:2014-07-04 02:34:21
【问题描述】:
根据http://emberjs.com/guides/object-model/classes-and-instances/,需要使用getter 和setter 访问属性:
访问对象的属性时,请使用 get 和 set 访问器方法。
确保使用这些访问器方法;否则,计算属性不会重新计算,观察者不会触发,模板也不会更新。
我知道在更改属性时需要使用 setter 来让 Ember 知道更改,以便它可以更新绑定,但是读取属性呢?
来自http://emberjs.com/guides/object-model/classes-and-instances/的示例
App.Person = Ember.Object.extend({
say: function(thing) {
var name = this.get('name');
alert(name + " says: " + thing);
}
});
var yehuda = App.Person.create({
name: "Yehuda Katz"
});
yehuda.say("Yes");
在上面的示例中,this.get('name') 用于访问属性 name,但是方法 say 被定义为类 App.Person 的属性,并且可以通过点符号直接访问。虽然方法和属性之间存在明显的用法差异,但在 JavaScript 中,两者的实现没有区别。如果我将this.get('name') 替换为this.name,该示例仍然有效。
- Ember 在对象的方法和属性方面是否存在任何实现差异?
- 直接访问方法总是安全的吗?
- 是否必须始终由 getter 访问所有属性(包括计算属性)?如果没有,什么时候可以安全地直接访问属性?
我绝对想在这里坚持最佳实践,即每次都使用 getter/setter,但我想了解 Ember.js 的内部结构:)
【问题讨论】:
标签: ember.js