如何在全局上下文中定义函数


context = this
function test() {
  (function(cmd) {
    eval(cmd);
  }).call(context, 'function foo(){}');
};
test();
foo(); // => ReferenceError: foo is not defined

如何在函数内部定义全局函数?(使用nodeJS)

访问全局对象的典型方法是调用一个生成值,例如从逗号操作符调用。

function a() {
  (0, function () {
    this.foo = function () { console.log("works"); };
  })();
}
a();
foo();

更新:由于strict mode问题,这里是另一个版本(引用:(1,eval)('this') vs eval('this')在JavaScript?,在Javascript中'this'是全局对象的情况):

"use strict";
function a() {
  (0, eval)('this').foo = function () { console.log("works"); };
}
a();
foo();

在Node.JS中使用global对象:

function test() {
  eval('function foo() { return "this is global"; }');
  global.foo = foo;
};
test();
console.log(foo()); // this is global

相关内容

  • 没有找到相关文章

最新更新