gpt4 book ai didi

javascript - 在匿名和异步函数上绑定(bind) this 关键字

转载 作者:可可西里 更新时间:2023-11-01 09:31:35 24 4
gpt4 key购买 nike

在 JavaScript 中,我正在寻找一种在匿名和异步函数上使用 bind() 的方法。

例子:

exports.foo = function () {};

exports.foo.prototype = {
load : function(id) {
var query = new Parse.Query("SomeObject");
query.get(id).then(function(object) {
this.object = object; // this is the wrong this
});
}
};

我通过将函数设为非匿名来实现此功能,但我认为这让我的代码看起来很难看。特别是在连续使用 4 个不同的匿名函数之后。

exports.foo = function () {};

exports.foo.prototype = {
load : function(id) {

function _load(object) {
this.object = object;
}
var _loadThis = _load.bind(this);

var query = new Parse.Query("SomeObject");
query.get(id).then(_loadThis);
}
};

有没有更好的办法?

最佳答案

嗯,它不一定“更好”,但您可以在函数实例化表达式的右大括号之后直接调用 .bind():

query.get(id).then(function(object) {
this.object = object; // this is the wrong this
}.bind(this));

一个函数实例化表达式给你一个函数对象引用,所以在它后面放一个 . 并调用 bind 是有意义的。因此,传递给 .then 函数的是调用 .bind 的返回值。

关于javascript - 在匿名和异步函数上绑定(bind) this 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915398/

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