ES6 setter -保持对象干净//映射实例对象上的参数
ES6 setter - keep object CLEAN // map params on instance object
我想在数组中包装值,当它们在我的对象上设置时,但我想保持"全局"对象命名空间CLEAN
问题是我有一个8个具有相同要求的道具列表
我不希望对象被大量的get
和set
污染,加上this._left
,以避免在设置由setter监控的相同道具时发生无限循环....
class Tree {
constructor (config) {
this.left = config.left || [this];
this.right = config.right || [this];
this.child = config.child || [this];
this.parent = config.parent || [this];
this.somethingElse = config.somethingElse || [this];
// etc.
}
}
myObj = new Tree();
myObj.left = 2;
我想确保myObj.next === [2]
My attempt (too pollution):
['left', 'right', 'child', 'parent', 'etc', 'adfasdf', 'dsfmkfs', 'previous'].forEach(direction => {
Object.defineProperty(this, prop, {
set: (val) => {
if (!Array.isArray(val)) {
this['_' + prop] = [val]
} else {
this['_' + prop] = val;
}
},
get: (val) => {
return this['_' + prop];
}
});
});
没有setter/getter就不能有setter/getter。但是,您不一定需要这些带下划线前缀的属性来存储值:
['left', 'right', 'child', 'parent', 'etc', 'adfasdf', 'dsfmkfs', 'previous'].forEach(prop => {
var value = [this];
Object.defineProperty(this, prop, {
set(val) {
if (!Array.isArray(val)) {
val = [val];
}
value = val;
},
get(val) {
return value;
},
enumerable: true,
configurable: true
});
});
相关文章:
- 如何运行对象映射函数
- javascript对象2对象映射器
- 如何将 JSON 对象映射到 ng-repeat 中的折叠行
- 将 Json 对象映射到每个属性类和数据
- jQuery逗号分隔的字符串到对象映射
- 使用 KnockoutJS 将 JSON 对象映射到视图模型的一部分
- 如何将javascript对象映射到mvc模型
- AngularJS将一个对象映射到另一个对象
- 将JSON对象映射到TypeScript对象
- 如何使用Javascript对象/映射作为队列
- 将JSON对象映射到Javascript对象
- 对象中的对象映射
- 我如何将一个大对象映射到 es6 中的数组
- Javascript将对象映射转换为多维数组
- Javascript将对象映射转换为数组
- 下划线:通过对象映射(即使未定义)
- 将对象映射到一行中的key=value字符串
- 如何在Angular JS中对1:1的对象映射进行排序
- Js对象映射
- 将对象映射到数组中,然后使用jQuery输出值