node.js中的计算属性
Computed Properties in node.js
我真的爱上了Ember.js中的计算属性。node.js中最接近的计算属性实现是什么?
编辑:应该更精确一点。余烬计算属性的酷特征是
- 简单语法
- 许多解决comon模式的助手,例如Ember.computed.and()或Ember.competed.any()
- getter在使用依赖属性时只调用一次。然后缓存getter值,直到相关属性发生更改
- 只有在访问该属性时才会调用getter
所有这些都产生了更像声明的对象定义,其中几乎没有函数代码,但包含大量功能。
您可以使用标准的getters/ssetter(几乎在每个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
。它们将允许您为对象的属性定义getter和setter。
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;
}
});
相关文章:
- Ember服务在注入组件并在计算属性中使用后是未定义的
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 升级到Ember 1.0计算属性在视图中不再有效
- ES6非结构化中的计算属性-非结构化整体对象
- 在Ember中,can服务具有计算属性
- Ember.js数组控制器计算属性的复选框
- 在ember.js中访问模型之外的计算属性
- Vue.js在计算属性中设置值
- Ember使用参数计算属性
- ember.js计算属性中this的值是如何定义的
- Google Chrome中的计算属性名称({[a]:1})
- Backbone.js在模型后面添加了一个计算属性's已解析
- Ember-自定义计算属性,用于检查是否存在所有依赖字段
- 阻止在knockout.js中运行计算属性(dependenobservable)
- 使计算属性依赖于emberjs中另一个对象的所有属性
- 如何使用ES6在Ember中声明可观察性或计算属性
- 如何在Ember.js中创建一个计算属性来查看单个EmberData属性是否脏
- Coffescript 和 Ember.js计算属性
- 记录未按时加载到组件中的计算属性
- 如何创建向属性加 1 的 Ember 计算属性