在Javascript对象文字中使用属性

时间:2014-07-27 01:54:21

标签: javascript

我正在寻找创建具有动态字段的javascript json对象,该动态字段将仅返回基于先前指定的属性的值。到目前为止这就是我所拥有的......

var car = {
  color: 'red',
  wheels: 4,
  hubcaps: 'spinning',
  age: 4,
  full_name: this.color + ' ' + this.spinning
}

我想知道这是否可行?我的目标是能够引用car.colorcar.full_name等值。对于此示例,car.full_name将返回值red spinning

2 个答案:

答案 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,后面可以有一个函数,但可以像属性一样使用。