这个组件的感化是:初始化一个容器,然后可以给这个容器添加子容器,也可以移除一个容器。
功能很简单,但这里涉及到了别的一个概念:急速履行函数。 简单懂得一下就行,须要重点懂得的是这种写法是若何实现闭包功能的。
是以这段代码履行履行过程可以分化如下:
可以将膳绫擎的代码拆分成两部分:(function(){}) 和 () , 第1个() 是一个表达式,而这个表达式本身是一个匿名函数,所以在这个表达式后面加 () 就表示履行这个匿名函数。
在 Javascript 中,如不雅一个对象不再被引用,那么这个对象就会被 GC 收受接收,不然这个对象一向会保存在内存中。
- var f = function(document){
- var viewport;
- var obj = {
- init:function(id){
- viewport = document.querySelector("#"+id);
- },
- addChild:function(child){
- viewport.appendChild(child);
- },
- removeChild:function(child){
- viewport.removeChild(child);
- }
- }
- window.jView = obj;
- };
- f(document);
- window.jView = obj;
obj是在函数 f 中定义的一个对象,这个对象中定义了一系列办法, 履行window.jView = obj 就是在 window 全局对象定义了一个变量 jView,并将这个变量指向 obj 对象,即全局变量 jView 引用了 obj . 而 obj 对象中的函数又引用了函数 f 中的变量 viewport ,是以函数 f 中的 viewport 不会被 GC 收受接收,viewport 会一向保存到内存中,所以这种写法知足了闭包的前提。
4、总结
这是对闭包最简单的懂得,当然闭包还有其更深层次的懂得,这个就涉及的多了,你须要懂得JS的履行情况(execution context)、晃荡对象(activation object)以及感化域(scope)和感化域链(scope chain)的运行机制。但作为初学者,临时不必懂得这些,有了简单的懂得之后,必定要在实际项目顶用起来,等你用的多了,对于闭包,你天然会有更深层次的懂得!
推荐阅读
【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 有些更高等的恶意软件(例如应用零日马脚的多级恶意软件)可进击这些安然对象并感染受害机械。这种高等恶意>>>详细阅读
本文标题:干货分享:让你分分钟学会JS闭包
地址:http://www.17bianji.com/lsqh/36249.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示