新函数vs新函数()

时间:2014-05-23 09:15:03

标签: javascript

我在下面看到了javascript中使用的内容。

var t = new Function;//what does it mean?
var t1 = new Function();

我还在MDN中阅读了Function。没有找到这样的用法。

我知道函数是js中的内置对象。所以我做了一些测试。发现不允许使用对象。为什么呢?

    var apple = {
                type: "macintosh",
                color: "red",
                getInfo: function () {
                    return this.color + ' ' + this.type + ' apple';
                }
            }
            var t3 = new apple;//Uncaught TypeError: object is not a function index.html:58
(anonymous function)

对于没有括号的new Function,这意味着什么?感谢。

4 个答案:

答案 0 :(得分:2)

new Functionnew Function()相同,此处您的问题是独立的。

apple是一个文字对象,而不是一个函数,所以无论有没有括号,你都可以实现它。

答案 1 :(得分:2)

var a = new Function

这意味着你创建了一个空的匿名函数,如果你没有提供函数体的主体,那么新的Function和new Function()都是相同的

苹果也是一个对象,因此无法实例化。

答案 2 :(得分:1)

Function是用于创建Function类型的Object的构造函数。你可以用这些方式之一创建新对象,

obj = new Function

obj = new Function()

同样的方式,如果你有自己类型的任何构造函数,你也可以这样做。假设你有一些汽车构造函数。你可以用其中一种方式创造新车,

myCar = new Car or myCar = new Car()

但是,在你的情况下,苹果是恒定的对象。你无法使用它创建新对象。如果你想要你可以使用Apple Constructor,

function Apple(type, color) {
 this.type = type;
 this.color = color;
}

然后你可以做你真正想要的事情,

 var t3 = new Apple("macintosh", "red");

答案 3 :(得分:1)

Function构造函数(new Function/new Function())创建一个新的Function对象。在JavaScript中,每个函数实际上都是一个Function对象。

java脚本中的(new Function/new Function())都相同

请结帐Function