JavaScript的动态属性是“eval”改变调用上下文。这是什么意思?一些例子会更好。JavaScript中的eval如何更改调用上下文?
3
A
回答
4
eval
没有改变的背景下间接调用时。它将其更改为全局上下文(所有函数的默认上下文)。
var myObj = { a: 1 }
function someFunc() {
console.log(eval('this.a')) // 1
console.log(eval('this === myObj')) // true
var indirectEval = eval
console.log(indirectEval('this.a')) // undefined
console.log(indirectEval('this === window')) // true
}
void someFunc.call(myObj)
直接eval
调用不会更改上下文(也不会更改范围)。详细请参照“Global eval. What are the options?”。
3
“一”的变量是上下文的一部分,和EVAL改变它。
调用上下文是围绕eval调用的变量,在我们的例子中只是“a”变量和在浏览器中等于窗口的“this”。
var a = 1;
eval("a = 2;");
alert(a); // 2
一个例子是比较明确的http://jsfiddle.net/9h6n7/2/:我想你指的是执行上下文,而不是调用上下文
function executeEval(){
eval("a = 2;");
}
var a = 1;
executeEval();
alert(a); // 2
0
。
在这里解释它似乎没有什么意义,因为有很多在线文章处理这个和良好的JS书籍,如Javascript,Good Part也处理它。
下面是其中居于首位在谷歌的链接:http://ajax.sys-con.com/node/676031
相关问题
- 1. 如何更改WPF中的上下文
- 2. 如何更改在javascript中的函数的上下文
- 3. 用Javascript更改Django模板上下文
- 4. 更改JavaScript脚本执行上下文
- 5. 如何更改以下代码以不使用eval?
- 6. 更改用户上下文
- 7. jQuery更改回调上下文
- 8. 如何使用块更改ruby中的执行上下文?
- 9. 如何调用JavaScript更改CSS
- 10. 用spring-security更改方法调用的安全上下文
- 11. 如何更改javascript中的glyphicons文本
- 12. 在tabindex上调用javascript函数更改
- 13. 更改调用上下文菜单的控件的属性
- 14. 在JavaScript中更改函数的上下文
- 15. 更改grails中的上下文根2
- 16. 调用$ .each()函数时的上下文更改
- 17. 如何更改explorer.exe中的NotifyIcon的上下文菜单?
- 18. 如何更改Android中的上下文菜单的textSize
- 19. 如何更改位置文本视图使用上下文
- 20. 如何在不使用eval的情况下动态调用类?
- 21. 如何使用'绑定'更改函数的上下文?
- 22. 如何使用linux更改glassfish的上下文路径
- 23. 如何更改ContextLoaderListener的应用程序上下文路径
- 24. 如何更改URI中的上下文名称
- 25. 如何更改Textmate捆绑包中的语言上下文?
- 26. 更改Spring上下文
- 27. 从qml更改上下文
- 28. JavaScript函数调用上下文
- 29. JavaScript调用()函数此上下文
- 30. 如何在更改我的上下文后强制NSFetchedResultsController更新
请在阅读上述声明的位置添加源代码。 – Starx 2012-01-01 17:07:03
'eval'作用域到调用上下文。有关代码,请参阅[this](http://www.bennadel.com/blog/1926-Exploring-Javascript-s-eval-Capabilities-And-Closure-Scoping.htm)。这意味着调用“eval”的上下文是被执行代码的执行环境。 – 2012-01-01 17:08:43
http://www.langnetsymposium.com/2009/talks/18-LarsBak-JavaScript.html – dalibocai 2012-01-01 18:06:25