Javascript是有點混亂,因爲一個函數是一個沒有/默認上下文的普通函數,但與new
配對它創建一個新的對象。所以
function Foo() {
this.prop1 = 20;
}
console.log(typeof(Foo)); //-> 'function'
創建一個名爲Foo的對象,其類型爲function
。現在我們可以把我們的函數對象和創建將被添加到當前堆棧新的對象:
var bar = new Foo();
console.log(typeof(bar)); // -> 'object' with a pointer named prop1 to 20
現在我們有兩個對象,Foo
和bar
其中引用使用美孚與新構造函數創建的對象。所以new
基本上是魔術,並且是在Javascript中創建對象的三種方法之一。這三個方面是:
var object = {}; // Creates an object using object literal notation
new Foo(); // Creates an object with built in 'new'
Object.create(null); // new ECMA5 notation that avoid using new
來源
2012-06-24 06:18:05
Art
給定一個變量如何判斷它是一個函數對象還是使用javascript代碼的普通對象? – seahorse
@seahorse:用'typeof'。它將返回函數''功能''。 –
您也可以執行'myFunction instanceof Function'或'myFunction.constructor == Function' –