我看到有些人将代码包装在新函数(){}中,如
new function(){
var app= angular.module('app',[])
app.controller('ctrl',function(){});
};
它有效,但与(function(){})()
有什么不同答案 0 :(得分:4)
有两件事是不同的:
它会创建一个对象,在您的示例中,该对象不用于任何内容,并且在函数返回后立即可用于垃圾回收。
它会更改函数中的this
值:
在new
示例中,this
引用#1
在您的第二个示例(IIFE)中,this
是undefined
(在严格模式下)或对全局对象的引用(在松散模式下)
如果您不打算使用new
创建的对象,则new
形式没有意义;这只是一种风格选择。
答案 1 :(得分:2)
new
会返回一个实例,它可以作为一个构造。
在您声明它时,(function(){})();
只会运行一次函数,这也称为IIFE - 立即调用函数表达式。
但是new
的示例不正确,因为您需要将数据分配给this
,以便将某些内容存储在您正在构建的实例中。例如:
var obj = new function(){
this.app= angular.module('app',[])
this.app.controller('ctrl',function(){});
};
// Now you can use obj.app