課程
/前端開發(fā)
/jQuery
/jQuery源碼解析(架構(gòu)與依賴模塊)
文中說的把data直接放在元素對象上會引起虛幻引用和全局污染,這個不太好理解,請哪位大神幫忙舉個例子解釋一下?謝謝!
2015-06-25
源自:jQuery源碼解析(架構(gòu)與依賴模塊) 4-4
正在回答
我理解的是,整個dom也屬于全局,多個js代碼對同一dom節(jié)點添加/修改數(shù)據(jù)可能會互相影響,也就是污染了dom元素這一個全局變量.
循環(huán)引用,這里用事件對象的回調(diào)函數(shù)為例子(取自《javascript高級程序設(shè)計》第三版 7.2.3):
function?assignHandler()?{ ??var?ele?=?document.getElementById('someEle'); ??ele.onclick?=?function()?{ ????alert(ele.id); ??} }
這里ele.onclick引用了匿名函數(shù),匿名函數(shù)又引用了ele(這里匿名函數(shù)實際引用assignHandler的活動對象,assignHandler的活動對象引用ele).因此,這里ele的引用數(shù)至少為1.
在IE9之前,由于dom采用的是引用計數(shù)的垃圾回收機制,因此這種情況下會導(dǎo)致其占用的內(nèi)存無法回收,造成內(nèi)存泄漏.
冒泡?
舉報
由淺入深地剖析jQuery庫的設(shè)計與實現(xiàn),揭開框架背后的秘密
1 回答為什么init作為構(gòu)造函數(shù)可以解決遞歸循環(huán)
4 回答寫法一和寫法二 兩種形式會不會因為閉包的緣故導(dǎo)致全局變量駐留內(nèi)存。
2 回答但deep=true的時候,不是window.$和window.JQuery都失去引用了,JQuery不是報廢了?
5 回答為什么要用setTimeout
4 回答下面的代碼也能實現(xiàn)相同的功能,為何要引入 fn.init 這個東西呢? 好處是什么?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-05-31
我理解的是,整個dom也屬于全局,多個js代碼對同一dom節(jié)點添加/修改數(shù)據(jù)可能會互相影響,也就是污染了dom元素這一個全局變量.
循環(huán)引用,這里用事件對象的回調(diào)函數(shù)為例子(取自《javascript高級程序設(shè)計》第三版 7.2.3):
這里ele.onclick引用了匿名函數(shù),匿名函數(shù)又引用了ele(這里匿名函數(shù)實際引用assignHandler的活動對象,assignHandler的活動對象引用ele).因此,這里ele的引用數(shù)至少為1.
在IE9之前,由于dom采用的是引用計數(shù)的垃圾回收機制,因此這種情況下會導(dǎo)致其占用的內(nèi)存無法回收,造成內(nèi)存泄漏.
2016-03-16
冒泡?