我在使用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.
前缀的情况下使用对象属性?
答案 0 :(得分:1)
嗯,有with
声明被弃用了,你可能不应该过多地使用它,但在这种情况下,它可能不会被认为是有害的:
with(myObject){
console.log( property1 ); // 20
console.log( eval('property1') ); //20
console.log( eval('property1+property2') ); // 5020
}