微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

模块模式javascript实例内部的变量范围和闭包

我正在编写一个jQuery插件,并且以一种非jquery-community-standard的方式编写它,主要是
保持可移植性和可扩展性.

从原型访问时,访问函数中声明的变量时遇到麻烦.

也许我的模型非常错误,但是我希望有人可以指出实现我的目标的正确方法,那就是创建同一类的多个实例.

当我尝试关闭窗口时出现我的问题,出现“ this.auga is undefined”错误.当我创建关闭按钮时(在build window方法内部),我附加了click事件.click(this.hide)-这是函数原型中的另一种方法.我的.resize事件也不起作用,因为方法.centerauga使用了我的this.win属性.获取this.win是未定义的错误.

为什么.show方法具有定义的this.auga,而.hide方法仍未定义?我知道我正在从实例本身访问.show方法-但是为什么其他方法也不能访问该实例?

这不是“请做这项工作”.我正在编写此插件以更加熟悉JavaScript.所以,如果有人有任何见识,请-我都很高兴.

这是示例的链接
http://jsfiddle.net/G26aM/16/

解决方法:

在jQuery回调中,即使回调函数位于对象中,“ this”变量也将指向创建事件的元素.

要在对象开始时解决此问题,请执行以下操作:

var self = this;

然后,每当要引用对象时,请使用“ self”而不是“ this”.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐