真实用例动态(计算)属性
Real use case dynamic (computed) property
动态属性:
var obj = {
// Computed (dynamic) property names
[ 'prop_' + (() => 42)() ]: 42
};
这当然很奇特。但是,在不增加不必要的复杂性的情况下,哪里可以使用它呢?
如果您有一个属性名称作为常量:
var obj = { [SOME_CONSTANT]: 42 };
我想要的一种情况是,JSON的属性名称是在生成的文件中基于Java类定义的。
// Generated
var SomeJsonBodyParams = {NAME: 'name', ID: 'id', ETA, 'estimatedTimeOfArrival'};
// Using it
sendAjax('some/url', {
[SomeJsonBodyParams.NAME] = userData.name,
...
});
我们甚至有一个方法,这样我们就可以做到
function makeObj() {
var obj = {};
for (var i=0; i < arguments.length; i+=2) {
obj[i] = obj[i+i];
}
return obj;
}
sendAjax('some/url', makeObj(
SomeJsonBodyParams.NAME, userData.name,
...
));
您可以在class
和Symbols:中使用它
class MyClass {
[Symbol.iterator]() {
// my iterator
}
}
假设您有:
var hi = 'hi';
var test = 'test';
var hello = 'hello';
代替:
var object = {};
object[hi] = 111;
object[test] = 222;
object[hello] = 333;
你可以用更短的语法写它:
var object = {
[hi]: 111,
[test]: 222,
[hello]: 333
}
例如,当您想使用常量作为对象中的键时,可以使用它。
const DATA_TYPE = {
PERSON: 'person',
COMPANY: 'company'
};
let cache = {
[DATA_TYPE.PERSON]: getPerson()
};
以及以后的访问:
cache[DATA_TYPE.PERSON]
代替DATA_TYPE.PERSON
可以是任何东西(包括一些实时计算值)。
相关文章:
- 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 计算属性