js 作用域问题

1.js中的作用域问题

window.onload = function(){
	var box = document.getElementById('aa');
	box.onclick = function(){
		alert(this);     //返回[object HTMLDivElement],此时的this代表着box(因为是被box的事件绑定的)
		toBlue();        //当执行这一行时,this就代表着window了
		toBlue.call(this);  //所以在此处应该用call来使用box对象执行toBlue函数,
                                    //PS:这里面的this是指当前的匿名函数(就是被box.onclick绑定的),
                                    //   匿名函数的当前对象是box,这点可以从上面alert(this)中看出
	}
}
function toBlue(){
	this.className = 'pox';
	this.onclick = toRed;
}
function toRed(){
	this.className = 'box';
	this.onclick = toBlue;
}
顺便写上html代码(乱写的):

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>北京精时恒达</title>
	<link rel="stylesheet" href="./style.css">
        <style>
            .box{
    width:200px;
    height:200px;
    background:red;
    overflow:scroll;
    padding:10px;
    border:10px solid black;
    margin:10px;
}
.pox{
    width:200px;
    height:200px;
    background:blue;
    overflow:scroll;
    padding:10px;
    border:10px solid black;
    margin:10px;
}
        </style>
</head>
<body>
	<div class="box" id="aa">123aaaaaasdasdsadsadsadsadsadassssssssssssssssdasdasdasdasdasdddddddddddddd
	<div id="ee">444<div id="tt">555</div></div></div>
	<script src="js/common.js"></script>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值