我正在尝试构建一个名为 myApp 的应用程序,它具有属性 regularNameErrors 和方法 populateJSON,它使用 AJAX 调用来获取 JSON 对象,然后将其添加到声明为该方法的参数之一的属性中。
获取数据的功能肯定有效,因为位置 3 的警报给出了正确的键列表。但是,1 处的警报返回未定义,2 处的警报为空白。
当我再次destination = data
用它替换该行时,myApp.regularNameErrors = data
它可以工作,所以我认为我误解了如何将对象属性传递给对象方法。但是我想多次使用方法 populateJSON 并且需要知道传递属性的正确方法。
var myApp = {
init: function () {
myApp.populateJSON(myApp.regularNameErrors, 'data/spelling.json').done(function () {
alert(myApp.regularNameErrors['kingscross']); //1
});
},
regularNameErrors: {}, //Object of spelling mistake:proper key:value pairs
populateJSON: function (destination, source) {
var def = $.Deferred();
$.getJSON(source, function (data) {
destination = data;
alert(Object.keys(myApp.regularNameErrors)); //2
alert(Object.keys(data)); //3
def.resolve();
});
return def.promise();
},
};