有没有办法将一个对象属性的值链接到另一个对象属性的值?
我的想法是,我有一个例外的界面,所以我需要propertys.name
和.value
作为我的对象。在这种特殊情况下,名称很容易从值构造(值是一个数组,名称是array.toString()
)
我可以使用obj.value.toString()
代替值,但代码需要使用obj.name
才能使其适用于所有情况。
我尝试了这段代码,但它没有产生我想要的结果。我怎样才能达到预期的行为?
obj = {value: array, name: this.value.toString()}
答案 0 :(得分:6)
您可以使用getter.
var obj = {
value: array,
get name() {
return this.value.toString();
}
};
console.log(obj.value.toString() === obj.name); // true
如果需要,您甚至可以将其扩展为使用setter。
var obj = {
value: array,
get name() {
return this.value.toString();
},
set name(val) {
this.value = val.split(','); // or any other operation you may need
}
};
obj.name = '1,2,3';
console.log(obj.value); // ['1', '2', '3']
答案 1 :(得分:0)
如果你需要名字来做某事,你需要一个功能:
obj = {value: ['foo','bar'], name: function() { return this.value.toString() }}
console.log(obj.value)
console.log(obj.name())
["富"" BAR"]
FOO,酒吧
答案 2 :(得分:0)
没有。在初始化对象时无法访问属性。但是,您可以在创建对象后设置它。
obj = {value: array, name:null}
obj.name = obj.value.toString();
答案 3 :(得分:-1)
使用吸气剂:
var obj = {
value: [1, 2, 3, 4, 5, 6, 7, 8],
get name(){
return this.value.toString()
}
}
console.log(obj.value)
console.log(obj.name)