我对 Javascript 中的整个原型想法很陌生,从我到目前为止收集到的内容来看,它基本上是一个用于创建新对象的模板。
无论如何,我有一个对象“Schedule”,它是“PageObject”的子对象。这是 Schedule 对象中的一个函数:
Schedule.prototype.serviceSuccessFunction = function(data, status, xqr) {
var ld;
ld = Schedule.__super__.serviceSuccessFunction.call(this, data, status, xqr);
ld.done($.proxy(function(x) {
return console.log(this);
}, this));
ld.done($.proxy(this.render, this));
return ld.done($.proxy(this.modernizeAndShow, this));
};
这是 PageObject 的函数的样子(从它的子函数调用):
PageObject.prototype.serviceSuccessFunction = function(data, status, xqr) {
$.mobile.loading("show");
return $.when($.mobile.loadPage("pages/" + this.url, {
pageContainer: $("#" + this.loadOptions.loadSection)
}));
};
如您所见,PageObject 正在返回此移动页面加载时的延迟对象。然后我在 Schedule 对象中有自定义的 .done() 函数。这些完成的功能将根据“数据”参数的内容进行渲染。
这个“数据”参数来自另一个延迟对象(使用 $.ajax)。当我在调度成功函数的第一行设置断点时,“数据”被正确地填充了 ajax 调用返回的内容。
现在我的问题是我希望能够使用数据作为参数在 Schedule 中调用不同的函数,或者将数据保存在 Schedule 对象本身上。你认为我将如何将数据对象传递给这些函数?
当我return console.log(this);
在线上断点时,“this”是Schedule 对象,这要归功于$.proxy。但我找不到“数据”(我想这是有道理的)。理想情况下,我想将“数据”作为参数传递并执行类似的操作
ld.done($.proxy(function(data) {
this.rData = data;
}, this));
但上面的“data”或“x”只是.ajax 调用的url。