gpt4 book ai didi

javascript - 在 javascript 附件中访问 "this"的首选方法是什么?

转载 作者:行者123 更新时间:2023-11-29 09:58:14 39 4
gpt4 key购买 nike

我经常有这样的代码:

function Object() {
}

Object.prototype.getData() {
// THIS LINE:
var object = this;
$.ajax({
url: '...'
, success: function(data) {
object.onLoadData(data);
}
})
}

var o = new Object();
o.getData();

我的问题:上面的“var object = this”位的首选范例是什么?我看过这个:

var self = this;

看起来不错,我可能会偷用这个方法。从匿名函数中引用父对象的最常见方式是什么?有没有更聪明的方法来做到这一点?我经常发现自己把“var object = this;”在大多数对象方法的顶部,似乎有一些棘手的方法可以避免这种情况。

谢谢!

最佳答案

根据您的代码,不要使用变量。

使用 context: 参数在回调中设置 this 值。

Object.prototype.getData = function() {
$.ajax({
url: '...',
context: this, // <-----------set the context for the callbacks
success: function(data) {
this.onLoadData(data);
}
});
};

如果问题不只是处理 $.ajax,那么我会使用 bind()[docs]this 值绑定(bind)到函数。

function successCallback(data) {
this.onLoadData(data);
}

Object.prototype.getData = function() {
$.ajax({
url: '...',
success: successCallback.bind( this );
});
};

如果您需要支持没有 .bind() 的浏览器,那么我提供的文档链接中有一个 shim,您可以将其包含在内。

关于javascript - 在 javascript 附件中访问 "this"的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450637/

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