通过new Function(...)
调用将某些字符串转换为函数。
如何在不使用arguments.callee
的情况下在字符串内部使用此函数?
var f = new Function('return arguments.callee.smth');
f.smth = 128;
f(); // 128
答案 0 :(得分:0)
执行此类操作的唯一方法是使用闭包。
例如:
var f = (function () {
var f = new Function('return this().smth').bind(function () { return f });
return f;
})();
f.smth = 128;
f();
左右:
var f = (function (g) {
return function f() {
return g.apply(f, arguments)
};
})(new Function('return this.smth'));
f.smth = 128;
f();
无论如何,似乎arguments.callee
在构造函数内工作,无论严格模式如何。
有关该主题的其他链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee
使用arguments.callee没有好的替代
但是,在如下情况中,没有
arguments.callee
的替代方案,因此它的弃用可能是一个错误(请参阅错误725398)