我正在尝试创建一个JavaScript对象,如下所示.
var MyObject = function (parameters) {
this.parameters = parameters;
parameters.userFunction(this.MyObjectCallback);
}
MyObject.SOME_STATIC_VARIABLE = 21;
MyObject.prototype = {
myObjectCallback: function() {
console.log(this);
}
}
Run Code Online (Sandbox Code Playgroud)
该MyObject
对象将接受将传递处理程序的userFunction.用户函数将执行一些逻辑并将结果传递回实例,例如:
new MyObject({userFunction: function(callback) {
$.post(
'http://localhost/~knyttl/source.php',
{},
callback,
'json');,
}});
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使callback
正确调用,也this
可以获取JQuery
对象的实例,而不是MyObject
我想要的实例.总而言之,我无法保留MyObject
实例.
我甚至不确定这是否是创建JavaScript对象的正确方法.我将不胜感激任何建议.
您可以使用绑定特定this
值.bind
.我也纠正了资本化My
.
parameters.userFunction(this.myObjectCallback.bind(this));
Run Code Online (Sandbox Code Playgroud)
当你调用一个函数a.b()
,然后在里面b
,this === a
.但是,如果您不直接调用它但只传递函数(如a.b
)并稍后调用它,则此绑定将丢失.
.bind
返回一个新函数,现在接收jQuery ajax结果为this
.但是,它会忽略它并myObjectCallback
使用预定义(绑定)调用this
.
.bind
在旧版浏览器上不可用,但有可用垫片.
归档时间: |
|
查看次数: |
489 次 |
最近记录: |