Javascript对象上下文更改和评估

时间:2015-06-03 07:44:57

标签: javascript object properties

我在使用Object属性时遇到了一些麻烦。我想评估 myObject 上下文中的表达式,以避免使用 myObject.property

我的最终目标是评估更复杂的表达式,例如 'property1+property2' 而不是 'myObject.property1+myObject.property2'

我已经尝试了调用方法来更改上下文但是,它似乎没有看到传递上下文中的Object属性(即包含属性的Object)(请参阅下面代码的最后一行,生成误差)。

var myObject = {
      property1: 20,
      property2: 5000
};

print(myObject.property1);            // return 20
print(eval.call(myObject,property1)); // ReferenceError: property1 is not defined

有没有办法在不使用 this. myObject. 前缀的情况下使用对象属性?

1 个答案:

答案 0 :(得分:1)

嗯,有with声明被弃用了,你可能不应该过多地使用它,但在这种情况下,它可能不会被认为是有害的:

with(myObject){
 console.log( property1 );   // 20
 console.log( eval('property1') ); //20
 console.log( eval('property1+property2') ); // 5020
}

http://jsfiddle.net/f7d1b79b/1/