Javascript对象上下文更改和eval

Javascript Object context change and eval

本文关键字:eval 对象 上下文 Javascript      更新时间:2023-09-26

我有一些麻烦使用对象属性。我想在 myObject 上下文中求值表达式,以避免使用 myObject.property

我的最终目标是计算一个更复杂的表达式,如 'property1+property2' 而不是 'myObject.property1+myObject.property2'

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

var myObject = {
      property1: 20,
      property2: 5000
};
print(myObject.property1);            // return 20
print(eval.call(myObject,property1)); // ReferenceError: property1 is not defined

是否有任何方法可以使用对象属性而不使用 this. myObject. 前缀?

嗯,with语句是不推荐的,你可能不应该过多使用它,但在这种情况下,它可能不会被认为是有害的:

with(myObject){
 console.log( property1 );   // 20
 console.log( eval('property1') ); //20
 console.log( eval('property1+property2') ); // 5020
}
http://jsfiddle.net/f7d1b79b/1/