2012-11-21 23 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

相关问题