3、new 一下function也大有乾坤(小寫function) (1)、簡單的空函數(shù) 代碼如下: var func = new function() { }; alert(typeof (func)); //object alert(func); //[object Object] //alert(func()); //腳本錯誤 func不是函數(shù)
其實上面的代碼也就等價于下面的寫法: 代碼如下: function anonymousClass() { } //匿名類 var instance = new anonymousClass(); alert(typeof (instance));//object alert(instance); //[object Object]
[code]
(2)、函數(shù)帶個返回值的,也不是很難理解 [code] var func = new function() { return "jeff wong" }; alert(typeof (func)); alert(func); //alert(func()); //腳本錯誤 缺少函數(shù)
其實上面的代碼也就等價于下面的寫法: 代碼如下: function anonymousClass() { return "jeff wong"; } //匿名類 var instance = new anonymousClass(); alert(typeof (instance));//object alert(instance); //[object Object]
(3)、還是函數(shù)帶個返回值的,寫法稍微有點不同
下面的代碼請注意和(2)中的區(qū)分一下,因為接下來要重點討論的就是那一點點的不同書寫形式: 代碼如下: var func = new function() { return new String("jeff wong"); }; alert(typeof (func)); //object 意料之中 alert(func); //這里?! //alert(func()); //腳本錯誤 缺少函數(shù)
上面代碼的等價形式依然簡單: 代碼如下: function anonymousClass() { return new String("jeff wong"); } var instance = new anonymousClass(); alert(typeof (instance)); alert(instance);