我正在寻找创建具有动态字段的javascript json对象,该动态字段将仅返回基于先前指定的属性的值。到目前为止这就是我所拥有的......
var car = {
color: 'red',
wheels: 4,
hubcaps: 'spinning',
age: 4,
full_name: this.color + ' ' + this.spinning
}
我想知道这是否可行?我的目标是能够引用car.color
或car.full_name
等值。对于此示例,car.full_name将返回值red spinning
答案 0 :(得分:3)
您可以将对象包装在一个函数中,以便对其执行操作,例如级联。
var car = function () {
var color = 'red',
hubcaps = 'spinning',
full_name = color + ' ' + hubcaps;
return {
color: color,
wheels: 4,
hubcaps: hubcaps,
age: 4,
full_name: full_name
};
// (); <- calls the anonymous function after defining it
}();
// true
car.full_name === "red spinning";
编辑像@ Jimmyt1988所说的那样,如果你想要实例化这个函数的新版本,即OO Javascript,你可以删除内联函数调用();
并像这样使用它
var myCar = new car();
alert(mycar.color);
答案 1 :(得分:0)
当javascript文字静态声明时,你不能引用javascript文字中的其他字段,因为在解析器眼中,该对象尚不存在(它还没有完成解析)并且它也没有& #39;设置this
ptr,就像你试图使用它一样。
相反,你必须这样做:
var car = {
color: 'red',
wheels: 4,
hubcaps: 'spinning',
age: 4,
}
car.full_name = car.color + ' ' + car.spinning;
您的另一个选择是将full_name
转换为函数或getter,以便根据其他字段值动态计算。
如果你希望full_name
始终是动态的,那么你可能想要使用一个getter
,后面可以有一个函数,但可以像属性一样使用。