[英]Computed Properties in node.js
我真的很喜歡Ember.js中的計算屬性。 在node.js中最接近的計算屬性實現是什么?
編輯:應該更精確一些。 余燼計算屬性的很酷的功能是
所有這些都會導致對象定義更像聲明,功能代碼很少,但包含很多功能。
您可以使用標准的getter / setter方法(幾乎在每個JS環境中都可用)。
var person = {
firstName: 'Mike',
lastName: 'C',
get fullName() {
return this.firstName + ' ' + this.lastName;
},
set fullName(val) {
var valArray = val.split(/\s/);
this.firstName = valArray[0];
this.lastName = valArray[1];
return val;
}
};
console.log(person.fullName); // Mike C
person.lastName = 'Myers';
console.log(person.fullName); // Mike Myers
person.fullName = 'John Doe';
console.log(person.firstName); // John
使Ember和KnockoutJS之類的框架與普通JS(這是Node.js所擁有的,再加上一些用於I / O之類的API)區別開來的原因在於它們處理依賴關系跟蹤的能力。 沒有立即提供依賴項跟蹤。 有一個Object.observe
提案,該提案允許進行依賴項跟蹤(您仍然需要自己做一些工作),但此后已從標准中刪除,因此不打算使用它。
看一下Object.defineProperies
或Object.definePropery
。 它們將允許您為對象的屬性定義獲取器和設置器。
var person = { first: 'John', last: 'Doe' };
Object.defineProperty(person, 'fullName', {
get: function(){ return this.first + ' ' + this.last },
set: function(val){
var pair = val.split(/\s/);
this.first = pair[0];
this.last = pair[1];
return val;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.