什么'匿名函数包装器和javascript中的新函数包装器之间的区别
what's the different between anonymouse function wrapper and the new function wrapper in javascript?
我看到一些人将代码包装在新函数()中,{}类似
new function(){
var app= angular.module('app',[])
app.controller('ctrl',function(){});
};
它起作用了,但与(function(){})()
有两件事不同:
它创建了一个对象,在您的示例中,该对象不用于任何事情,并且在函数返回后立即可用于垃圾收集。
它改变了函数中
this
的值:在您的
new
示例中,this
指的是#1 中的对象在第二个示例(IIFE)中,
this
要么是undefined
(在严格模式下),要么是对全局对象的引用(在松散模式下)
如果您不打算使用new
创建的对象,那么new
表单就没有意义;这只是一种风格选择。
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
相关文章:
- 如何将函数包装在函数中以避免代码重复
- 尽管函数包装,但值在循环中未闭合
- 将同步函数包装到承诺中的最佳方法是什么?
- 计算三角形面积-作为变量工作,但不作为函数包装
- 如何将回调函数包装在其他回调函数中并从中调用
- 我可以在这个例子中立即调用我的函数,而不是通过匿名函数包装它吗?
- 使用自执行函数包装命名空间
- 有人可以在 JavaScript 中解释这种函数包装语法吗?
- 使用 Jasmine 测试 JavaScript 函数包装在 jQuery 中
- 将全局函数包装在 (function($){ }(jQuery) 中
- 如何将纯函数包装到构造函数中
- 为什么这个由Typescript生成的JavaScript构造函数包装了一个立即调用的函数
- 将方法名称作为回调传递VS.用烦人的函数包装它
- 为什么函数包装不隐藏javascript中未调用的函数对象
- 什么'匿名函数包装器和javascript中的新函数包装器之间的区别
- 如何将EasleJS库中的MouseEvent构造函数包装在GWT中?
- chrome.tab .create函数包装器,为什么不工作
- 将在其他地方定义的异步函数包装在回调中
- 为什么有两种不同的角函数包装方法,哪一种最好?
- 是否有一种方法可以将jquery函数包装到对象中?