为了账号安全,请及时绑定邮箱和手机立即绑定

typeof Function.prototype 是 function 为什么不可以当作构造函数

typeof Function.prototype 是 function 为什么不可以当作构造函数

哆啦的时光机 2018-10-04 09:19:20
typeof Function.prototype 是 function 为什么不可以当作构造函数 与前者有什么
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

是可以当做构造函数来用的

var adder = new Function('a', 'b', 'return a + b');// Call the functionadder(2, 6);// > 8

区别的话,用构造函数生成的函数不会有闭包,他们只能访问自身作用域和全局作用域声明的变量和函数。其他详细的地方参考MDN

Functions created with the Function constructor do not create closures to their creation contexts; they always are created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the Function constructor was called. This is different from using eval with code for a function expression.

var x = 10;


function createFunction1() {

    var x = 20;

    return new Function("return x;"); // this |x| refers global |x|

}


function createFunction2() {

    var x = 20;

    function f() {

        return x; // this |x| refers local |x| above

    }

    return f;

}


var f1 = createFunction1();

console.log(f1());          // 10

var f2 = createFunction2();

console.log(f2());          // 20


查看完整回答
反对 回复 2018-11-09
  • 1 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信