关于JS 全局对象封装的作用域的问题
<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名??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
非常感谢 ! 还有个问题, 就是能不能用 that来 暂存下 this ? 如果能, 应该在哪定义??
回复
http://jason.pettys.name/2011/10/06/javascript-this-and-that/
你绑定的this.disName到一个div元素中,click调用disName中的this是由运行的上下文确定的,即你的div元素
对于你这个check对象,它是一个单例对象,直接改为check.getName()
参见:http://jsfiddle.net/cgcgbcbc/p9hHC/1/
或者使用闭包来保持引用:
http://jsfiddle.net/cgcgbcbc/BcyE9/