绑定“这个”在数组的循环中
我有一个带有命名空间的 Javascript 函数,并且我正在使用 Prototype 来执行函数。示例代码:
GUI.Title = {
initialise: function() {
var elements = $$('a');
this.show(); /* now it refers to the namespace */
elements.each(function(element) {
this.show(); /* this refers to the window object, not to the namespace */
});
},
show: function() {
element.show();
}
}
“this”指的是每个函数外部的命名空间,而每个它内部的命名空间则指的是窗口。
有人可以向我解释如何在每个循环中使用“this”作为命名空间的引用吗?
我正在使用原型。
I have a Javascript function with a namespace and I am using Prototype to execute a function. Example code:
GUI.Title = {
initialise: function() {
var elements = $('a');
this.show(); /* now it refers to the namespace */
elements.each(function(element) {
this.show(); /* this refers to the window object, not to the namespace */
});
},
show: function() {
element.show();
}
}
'this' refers to the namespace outside the each-function and inside the each it refers to the window.
Can someone explain to me how I can use 'this' in the each-loop as a referer to the namespace?
I am using Prototype.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 Prototype 的
bind
方法来修改函数内this
的含义。Use Prototype's
bind
method to modify whatthis
means inside the function.替换
为
您正在做的事情是创建一个闭包,“范围”变量在词法上“封闭”到您的每个函数。请注意,这种方法不是特定于原型的,它是一种通用的 JavaScript 技术。
replace
with
what you are doing is creating a closure, the 'scope' var gets 'closed-in' to your each function lexically. Note that this approach is not prototype specific, it's a general javascript technique.