2012-11-21 19 views
0

請看下面的代碼:爲什麼這個返回的函數被調用時沒有對其值進行任何操作?

function doNotCallMe(){ 
    alert("Otherwise the world will be destroyed!"); 
} 

function getNotCallable(){ 
    return new function() { 
     alert("Attention!"); 
     doNotCallMe(); 
    }; 
} 

var not_callable = getNotCallable(); 

瀏覽器顯示警報,它不應該。爲什麼?怎麼修?

+1

你可以從'return new function(){'中移除'new'。 –

+0

你在說什麼警報? –

+1

@ChinmayeeG:兩者。 – Amadan

回答

2
return function() { ... } 

是你想要的。

與運算符new一起使用時,JavaScript中的所有函數都將用作對象構造函數;所以你定義了一個匿名函數,然後通過new調用它。

+0

是否'var obj = new afunction()'與'var obj = {}相同; afunction.apply(OBJ,[]);'? –

+0

這是它的一部分,但不是全部。作爲最重要的部分,它錯過了原型分配。閱讀JavaScript OOP;可以在[MDN]找到一個好的介紹(https://developer.mozilla.org/en-US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript)。 – Amadan

相關問題