gpt4 book ai didi

Javascript 对象原型(prototype) TypeError : . .. 未定义

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

我在调用原型(prototype)中的方法时遇到问题,该方法返回:

TypeError: this.backgroundImagesReplace(...) is undefined

this.backgroundImagesReplace(data)

我的代码如下所示:

var Template = function() {};

Template.prototype = {

backgroundImagesReplace : function(data) {

var defer = $.Deferred();

// some code that resolves the deferred object
defer.resolve(data);

},

replace : function(data, callback) {

this.backgroundImagesReplace(data)
.done(this.replaceContent)
.done(this.replaceElement)
.done(this.replaceAttribute)
.done(systemObject.executeCallBack(callback));

},

init : function() {

this.replace([], function() {

console.log('here');

});

}

};

var TemplateObject = new Template();
TemplateObject.init();

知道是什么原因造成的吗?

最佳答案

您忘记在 backgroundImagesReplace 函数中返回该对象。虽然您可以直接返回 Deferred 对象,但建议返回 Promise 对象,因为它更适合传递给其他对象/函数。 Deferred 对象应保持私有(private),因为它们的状态可以直接更改,而通过 Promise 对象意外更改状态要困难得多。您可以通过执行以下操作来做到这一点:

backgroundImagesReplace : function(data) {

var defer = $.Deferred();

// some code that resolves the deferred object
defer.resolve(data);

return defer.promise();
},

这会给您带来 TypeError ,因为您的代码正在尝试访问 undefined 的属性,这(当然)不会执行您期望的操作。

关于Javascript 对象原型(prototype) TypeError : . .. 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20117872/

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