JavaScript关于事件绑定

来源:互联网 发布:linux mint 中文 编辑:程序博客网 时间:2024/05/16 11:38
var odiv=document.getElementsByTagName('div');function divclick(obj){obj.onclick=function(){console.log(obj);}}for (var i = 0; i < odiv.length; i++) {divclick(odiv[i]);}//当执行点击函数时,还需要divclick函数,因此当循环结束时,divclick函数并不会被销毁,因此其作用域也被保留下来,因此正常输出 for (var i = 0; i < odiv.length; i++) {odiv[i].onclick=function(){console.log(odiv[i]);//此时i已经变化了}}//循环结束,绑定函数结束,函数自身、作用域、变量等都随之销毁,当执行onclick函数时,i值通过作用域链向上找,最后i作为全局变量且值为odiv.length+1,因此输出undefined for (var i = 0; i < odiv.length; i++) {odiv[i].onclick=function(){console.log(this);}}//这里涉及到this的指向问题,this指向调用的对象,且this指向是在函数执行时才确定的,并不是在函数定义时确定的//当点击事件触发函数时,this指向调用对象,而这里的调用对象正是odiv[i],因此正常输出

原创粉丝点击