Javascript对象上下文更改和eval
Javascript Object context change and eval
我有一些麻烦使用对象属性。我想在 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/相关文章:
- 如何使用其他地方指定的访问信息访问嵌套的json对象,而不使用eval或迭代
- 当类型存储在变量中时,不使用eval创建对象的实例
- eval() 在解析 json 对象时不是强制性的吗?
- 使用 eval() JS 动态创建对象
- Java 脚本 eval() 函数属于哪个对象?此外,在调用 eval() 函数时传递执行上下文
- eval 拒绝在 Javascript 中将字符串更改为对象
- Javascript:在为动态创建的对象设置 onClick 处理程序时避免 eval()
- 获取 eval 的“窗口”对象,并列出所有变量?Javascript eval inline html.
- 如何在不使用 eval() 的情况下从字符串运行 JavaScript 对象
- javascript中eval()的替代方案,嵌套对象
- 元素列表后的jquerymobile eval缺少对象参数]
- 切换嵌套的布尔对象属性(在任意深度)——可以不使用eval
- 对象的Eval方法
- 在对象文字上调用eval的Javascript(带函数)
- 由eval()触发的异常对象的标准字段是什么?
- 试图避免eval从窗口对象获取数组元素
- 使用string key访问或创建嵌套JavaScript对象,不需要eval
- 是否可以将对象传递给eval/setTimeout函数
- eval()如何区别对待字符串对象和原始字符串值
- Javascript嵌套对象查找,从字符串,没有eval