一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

解決使用attachEvent函數時,this指向被綁定的元素的問題的方法

使用attachEvent對同一事件進行多次綁定,這是解決事件函數定義沖突的重要方法。但是在IE中,函數內的this指針并沒有指向被綁定元素,而是function對象,在應用中,這是很難受的一件事,如果試圖用局部變量傳送元素,會因為閉包而引起內存泄漏。那么,我們應該如何解決這一難題呢?

   我給Function添加了原型方法“bindNode”,在這個方法里,根據傳送過來的元素,進行全局性存儲轉換,然后返回經過封裝的函數,使用call方法來進行屬主轉換。



<html>
<body>
<button id=btTest>test</button>
</body>
</html>
<script>
if(!document.all){
   HTMLElement.prototype.attachEvent=function(sType,foo){
       this.addEventListener(sType.slice(2),foo,false)
   }
}
Function.prototype.bindNode=function(oNode){
   var foo=this,iNodeItem

   //使用了全局數組__bindNodes,通過局部變量iNodeItem進行跨函數傳值,如果直接傳送oNode,也將造成閉包
   if(window.__bindNodes==null)
       __bindNodes=[]
   __bindNodes.push(oNode)
   iNodeItem=__bindNodes.length-1
   oNode=null
   return function(e){
       foo.call(__bindNodes[iNodeItem],e||event)
   }
}
abc()
function abc(){
   var bt=document.getElementById("btTest")
   bt.attachEvent("onclick",function(){

       //如果不經過bindNode處理,下面的結果將是undefined
       alert(this.tagName)
   }.bindNode(bt))
   bt=null
}
</script>

JavaScript技術解決使用attachEvent函數時,this指向被綁定的元素的問題的方法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久久精品免费国产四虎 | 在线精品国产一区二区 | 国产吧在线视频 | 精品视频第一页 | 91国语精品自产拍在线观看性色 | 热伊人99re久久精品最新地 | 欧美亚洲国产精品第一页 | 中文字幕视频一区 | xxxxx黄在线观看| 怡红院美国 | 一本大道加勒比久久综合 | 亚洲欧美日韩国产一区二区精品 | 欧美亚洲春色系列 | 久久手机免费视频 | 成zzzwww日本免费 | 欧美一级做一级做片性十三 | 永久免费精品影视网站 | 欧美一级日韩一级亚洲一级 | 久久99亚洲综合精品首页 | 99热这里只有精品88 | 婷婷视频网站 | 亚洲小视频 | 最新欧美精品一区二区三区不卡 | 伊人网在线播放 | 手机看片www xiao2b cm | 国产小视频在线观看免费 | 亚洲精品国产拍拍拍拍拍 | 国产精品国产 | 亚洲欧美一区二区三区不卡 | 国产一区二区自拍视频 | 黄色免费在线观看视频 | 一级做性色a爱片久久片 | 久久精品影院永久网址 | 四虎影视国产在线观看精品 | 狠狠色噜噜狠狠狠米奇9999 | 免费黄色视屏 | 国产午夜视频在线观看网站 | 亚洲国产精品第一页 | 四虎国产精品免费视 | 美女三级福利视频 | 青娱乐91视频 |