如何将javascript对象属性链接到同一对象的另一个属性?

时间:2016-03-30 16:11:54

标签: javascript object hyperlink properties interface

有没有办法将一个对象属性的值链接到另一个对象属性的值?

我的想法是,我有一个例外的界面,所以我需要propertys.name.value作为我的对象。在这种特殊情况下,名称很容易从值构造(值是一个数组,名称是array.toString()

我可以使用obj.value.toString()代替值,但代码需要使用obj.name才能使其适用于所有情况。

我尝试了这段代码,但它没有产生我想要的结果。我怎样才能达到预期的行为?

obj = {value: array, name: this.value.toString()}

4 个答案:

答案 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)