• 关于this的指向问题


    一个关于this指向而引发的血案。。。

    在测试this指向的程序中,我写错了id对象,结果呢,居然也有效果,这真是超于我意料之外太多了,我以为自己写错了,结果一样可以用。。。。。。。

    <div id="bbb">show</div>
    
    <script>
    	// window.onload = function(){
    	// 	//
     //        var s = document.getElementById('bbb');
     //        s.onclick = showThis;//this == div#show	
     //        bbb.onclick = function(){
     //        	console.log(showThis);//返回的是定义showThis的内容
     //        	showThis();//this = window
     //        }	
     //        // showThis();//this = window
    	// }
    	// function showThis(){
    	// 	console.log(this);
    	// }
    	window.onload = function(){
    		//直接使用id的方式调用方法,ie7,8,9,10,11,都支持,只不过ie7都返回object,其他都是[object Window],[object HTMLDivElement]bbb
            var s = document.getElementById('bbb');
            s.onclick = showThis;//this == div#show	
            bbb.onclick = function(){
            	showThis();//this = window
            	alert(this+'bbb')
            }	
            // showThis();//this = window
    	}
    	function showThis(){
    		alert(this);
    	}
    </script>
    

    做一点总结: window.onload = function(){

            //直接使用id的方式调用方法,ie7,8,9,10,11,都支持,只不过ie7都返回object,其他都是[object Window],[object HTMLDivElement]bbb
            var s = document.getElementById('bbb');
            console.log(s[onclick])
            // s.onclick = showThis;//this == div#show
            s.onclick = showThis;//实际上是把showThis的内容赋值给s.onclick,在未赋值前,s[onclick]为undifined
    s.onclick = showThis();//实际上和showThis()一样,也没有返回值,这样的方式其实在onclick为赋值前,showThis已经执行了; s.onclick = function(){//也是赋值,但是因为showThis是在外面定义的,所以showThis的this还是window showThis() } s.onclick = function(){//相当于s.onclick = showThis;也是赋值 alert(this) } // s.onclick = showThis(); // bbb.onclick = function(){ // showThis();//this = window // alert(this+'bbb') // } // showThis();//this = window } function showThis(e){ alert(this); }

      

  • 相关阅读:
    【Forza Horizon 5】频繁断网解决办法
    【Java】java.util.ConcurrentModificationException
    【MySQL】下发功能SQL
    【MybatisPlus】 Field '主键' doesn't have a default value
    【SpringBoot】数据源加密处理
    【VMware】将NAT虚拟机开放访问
    TreeView绑定数据库收藏
    存储过程概述
    asp.net页面直接输出纯xml
    如何保证远程登录服务器安全
  • 原文地址:https://www.cnblogs.com/bestsamcn/p/5498048.html
Copyright © 2020-2023  润新知