我有一个JavaScript类,想要将$ .getJSON的结果传递给同一个类的另一个方法,并从类外部访问它。我的错误在哪里?
我的代码类似于:
function MyClass() {
var mydata = false;
this.getData = function() {
$.getJSON( "/api/get.php", function(data) {
this.setData(data);
});
}
this.setData = function(data) {
this.mydata = data;
this.logData();
}
this.logData = function() {
console.log(this.mydata);
}
this.returnData = function() {
return this.mydata;
}
}
var MyClass = new MyClass();
MyClass.getData();
var data = MyClass.returnData();
首先,我想创建一个类的实例并从服务器获取数据。然后方法setData应验证结果,将其存储在变量中并将结果记录到控制台。在此之后,我想从课外访问数据。
答案 0 :(得分:1)
this
更改,因此您可以将this
存储在变量中:
function MyClass() {
var mydata = false, that = this;
this.getData = function() {
$.getJSON( "/api/get.php", function(data) {
that.setData(data);
});
}
this.setData = function(data) {
that.mydata = data;
that.logData();
}
this.logData = function() {
console.log(that.mydata);
}
this.returnData = function() {
return that.mydata;
}
}
var MyClass = new MyClass();
MyClass.getData();
var data = MyClass.returnData();
答案 1 :(得分:0)
试试这个:
function MyClass(){
var setValue="",logValue="";
var getJSON = function(setDatafunc){
$.getJSON( "http://demo3913311.mockable.io/mytestdata", function(data) {
setDatafunc(data);
});
}
var getData = function(){
return getJSON(setData);
}
var setData = function(data) {
setValue = (data)? data: (setValue)? setValue : 'undefined'
logData(setValue);
}
var logData= function(data){
logValue = (data)? data: (logValue)? logValue : 'undefined'
console.log('12',logValue)
return logValue;
}
var returnData = function(){
return logValue;
}
return {
get: getData,
set: setData,
//log: logData
doReturn : returnData
}
}
var MyClass = new MyClass();
MyClass.get()
MyClass.doReturn();