gpt4 book ai didi

javascript - 在原型(prototype)方法的回调函数中调用原型(prototype)方法

转载 作者:行者123 更新时间:2023-11-30 07:55:45 25 4
gpt4 key购买 nike

我有javascript类和2个原型(prototype)方法

var proEdit = function(){
this.client;
var self = this;
}
/*
class method to load all the project releted details
*/
proEdit.prototype.loadProject = function(){
this.client = $serviceCall.setClient("getAllByProjectID","project"); // method name and service
this.client.ifSuccess(function(data){ //sucess
self.kk();
})
this.client.ifError(function(data){ //falce
console.log("error loading setting data")
})
this.client.projectID($stateParams.projectID); // send projectID as url parameters
this.client.getReq(); // get request if post then use 'postReq('jsonbody')'
return this;
}


proEdit.prototype.kk = function(){
console.log("sass");
}

loadProject 方法中,我正在使用回调函数调用 api 来访问数据,如果它是 ifSuccess 那么我想调用 kk 原型(prototype)法。但它给了我这个错误。

angular.js:12722 TypeError: self.kk 不是函数

我尝试为同一个类创建新实例,然后调用 kk 函数。然后就可以了

  this.client.ifSuccess(function(data){  //sucess  
var in = new proEdit();
in.kk();
})

是回调引起的吗?我怎样才能防止这种情况。谢谢

最佳答案

如评论所述,您应该使用 .bind

示例

window.name = "Bar"
var MyClass = function(name) {
this.name = name;
}

MyClass.prototype.notify = function() {
console.log(this.name)
}

var m = new MyClass('Foo');

setTimeout(m.notify, 2000);

setTimeout(m.notify.bind(m), 2000);

关于javascript - 在原型(prototype)方法的回调函数中调用原型(prototype)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170082/

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