关于JS 全局对象封装的作用域的问题

大冒险 发布于 2013/09/14 23:52
阅读 1K+
收藏 0
<div class="w" style="height:35px;width:90px;border:1px solid #333;text-align:center;line-height:35px;" id="w">
 </div>
<script src="checkNum.js?callback=newNum"></script>
<script>
  var check={
	  name:"test",
	  getDiv:function(){
		  return document.getElementById('w');  
		  },
		  
	  getName:function(){
		  return this.name;    
		  },	
		    	
	  step:function(){
		 this.getDiv().onclick=this.disName;  //  绑定到事件
		  },
		  	  	  
  	  disName:function(){
		  alert(this.getName());   // 无法获取  getName(),显示not function
		  }  	  
	  }
	  
	check.step();      
</script>
问题: 全局对象封装下事件绑定的函数如何引用 其他同对象成员?? 比如: 我想点击 div然后弹出 getName获取的name名??
加载中
0
cgcgbcbc
cgcgbcbc

你绑定的this.disName到一个div元素中,click调用disName中的this是由运行的上下文确定的,即你的div元素

对于你这个check对象,它是一个单例对象,直接改为check.getName()

参见:http://jsfiddle.net/cgcgbcbc/p9hHC/1/

或者使用闭包来保持引用:

http://jsfiddle.net/cgcgbcbc/BcyE9/

cgcgbcbc
cgcgbcbc
回复 @大冒险 : http://jason.pettys.name/2011/10/06/javascript-this-and-that/
大冒险
大冒险
非常感谢 ! 还有个问题, 就是能不能用 that来 暂存下 this ? 如果能, 应该在哪定义??
返回顶部
顶部