gpt4 book ai didi

javascript - 如何在原型(prototype)函数中访问javascript对象数组

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

你好我有一个以前没有搜索过的问题

我正在尝试重新编码用于访问 google api 的 javascript,以便我可以创建对象以在更多项目中访问它们。让我解释一下代码,因为我没有在此处发布原始代码,下面的代码就像我的代码示例一样

我有一个构造函数,它有用“this”关键字声明的数组。然后我有一个构造函数的原型(prototype),在该原型(prototype)中我创建了一个无名函数来访问服务器请求的 jquery 输出。但是我无法访问那些数组对象

function cons(){
this.objectarray = [];
}
cons.prototype.profun = function(){
this.objectarray[0] = 'working';
alert(this.objectarray[0]);//Access is possible
$.get('requesting url',{'parameters'},function(data){
alert(this.objectarray[0]);//Access is not possible
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

当我尝试访问该 jquery 函数中的对象时,我从浏览器控制台收到此错误

TypeError: this.YouTubeTitle is undefined

最佳答案

您必须缓存 this 对象,这样当您在回调中使用 this 关键字时,它会引用正确的对象:

function cons(){
this.objectarray = [];
}
cons.prototype.profun = function(){
// this is volatile in JavaScript. It's meaning changes depending
// on the invocation context of the code that contains it. Here,
// this will refer to your "cons" object instance.
var self = this;

this.objectarray[0] = 'working';
alert(this.objectarray[0]);
$.get('requesting url','parameters',function(data){
// But here, "this" will be bound to the AJAX object
alert(self.objectarray[0]); // <-- Use cached this object
});
};

//*************************

var c = new cons();
c.profun();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 如何在原型(prototype)函数中访问javascript对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44248893/

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