Javascript 评估后保持上下文
Javascript 评估后保持上下文,javascript,Javascript,是否可以得到与调用window.func.foo()相同的结果;使用eval时?这与eval无关。当你说 foo(); 此在foo内部始终是全局对象(除非函数是使用bind创建的,请参见下文)。您有几个选择: 您可以使用bind //won't work on IE8 - will have to shim `bind` var foo = eval('func.foo.bind(func)'); 或者,您可以在调用函数时使用call var foo = eval('func.foo'
是否可以得到与调用
window.func.foo()相同的结果;代码>使用eval时?这与eval无关。当你说
foo();
此
在foo内部始终是全局对象(除非函数是使用bind
创建的,请参见下文)。您有几个选择:
您可以使用bind
//won't work on IE8 - will have to shim `bind`
var foo = eval('func.foo.bind(func)');
或者,您可以在调用函数时使用call
var foo = eval('func.foo');
foo.call(func);
是的,正如nbrooks所说的,应该不鼓励使用eval 找不到_evalJS的源。Actionscript的外部接口源显示_evalJS实际上是在调用js代码来保存它的上下文。有人知道它是怎么做的,或者把它的来源联系起来吗?@有人-不知道。以上应该是在函数调用中控制这个的最简单方法。就像我说的,我没有访问父对象(func)的权限。
var foo = eval('func.foo');
foo.call(func);