[英]JavaScript new Function expression and new Function constructor
我的问题是关于结果对象使用new function(){ ... }
不是new Function();
到目前为止我的理解/假设
我的问题
按照我上面的假设,为什么new Function();
和new function(){ ... }
返回不同的东西?
第一个返回一个函数对象,但后者返回一个标准对象。 鉴于引擎盖下的函数表达式使用Function()构造函数,为什么后者的行为与new Function();
?
使用new function(){ ...}
我希望有一个函数对象,而不是标准对象。
以下几行基本相同:
function foo(...) {...}
var foo = function (...) {...};
var foo = new Function (...);
它们都在当前作用域中声明了一个新函数(它是一个对象,它是一个Function
的实例,它继承了Object
原型,......),可以通过foo
变量访问它。
new
关键字从函数中实例化一个对象,该函数允许您使用标准OOP语言创建类似于类实例的内容。
继续上面的例子:
var bar = new foo(...)
将在当前作用域中实例化foo
函数的实例,该实例可以通过bar
变量访问。
为什么
new Function();
和new function(){ ... }
返回不同的东西?
我稍微会重复一下这个例子。 代替:
new Function()
//and
new function(){ ... }
我打算用
new Function()
//and
var foo = function () { ... };
new foo();
new Function()
返回与new foo()
不同的东西的原因完全是因为Function
是与foo
不同的函数。
我希望您不会因为new Object()
返回具有与new Array()
不同的功能的不同对象这一事实而感到困惑。 完全相同的事情发生在这里。
鉴于引擎盖下的函数表达式使用
Function()
构造函数,为什么后者的行为与new Function();
?
后面的表达基本上是:
new (new Function ( ... ))
new Function(...)返回一个新函数 ,而new function(){...}返回一个新Object 。
基本上,Function只是评估一段代码的一种方式。
对象是一种在javascript中存储数据的方式。
旁注:你可以在技术上做到
new (new Function(...))
返回一个新对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.