gpt4 book ai didi

javascript - 从方法的多个范围内的对象访问属性的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 20:11:10 25 4
gpt4 key购买 nike

例如,如果我有对象:

function Website(){
this.images = [];
}

Website.prototype.getImages = function(){
jQuery('img').each(function(key, val){
this.images.push(val.src);
})
}

我尝试调用 website.getImages() 我收到此错误:TypeError: Cannot call method 'push' of undefined

所以,为了解决这个问题,我会这样做:

Website.prototype.getImages = function(){
var images = this.images;
jQuery('img').each(function(key, val){
images.push(val.src);
})
}

但我不认为这个解决方案是干净的,因为如果我试图访问多个变量怎么办。

有没有更简洁、更好的方法来做到这一点?

最佳答案

你可以这样做:

Website.prototype.getImages = function(){
var self = this;
jQuery('img').each(function(key, val){
self.images.push(val.src);
// self.someOtherProperty
// self.someMethod()
})
}

在一般意义上,this 是根据函数的调用方式设置的,因此一旦嵌套函数,您就必须做一些事情来确保 this 设置正确对于内部函数,例如 .call().apply() - 或 .bind(),虽然 .bind () 直到版本 9 才被 IE 支持。

接受回调的 jQuery 函数总是将 this 设置为合乎逻辑的东西——在大多数情况下是当时正在处理的特定 DOM 元素。但是,当您希望它成为其他东西时,这当然无济于事。

关于javascript - 从方法的多个范围内的对象访问属性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com