Javascript 在不是回调的AJAX调用中访问此上下文?

Javascript 在不是回调的AJAX调用中访问此上下文?,javascript,jquery,ajax,this,Javascript,Jquery,Ajax,This,我有一个AJAX调用,在URL调用中使用绑定到this的变量。我也需要这个在回调 最初我使用的是var\u,它=这个模式,但没有通过代码审查。我加入了上下文:this,但不确定它是否在第二个链接上工作,我需要实际访问该链接,或者它是否仅在回调中可用 问题: 访问url参数和回调中使用的此上下文变量的最干净方法是什么 $.ajax({ url: "/search/".concat(_this.options.modelId), contentType: "a

我有一个AJAX调用,在URL调用中使用绑定到
this
的变量。我也需要这个在回调

最初我使用的是var
\u,它=这个
模式,但没有通过代码审查。我加入了
上下文:this
,但不确定它是否在第二个链接上工作,我需要实际访问该链接,或者它是否仅在回调中可用

问题: 访问
url
参数和回调中使用的
上下文变量的最干净方法是什么

    $.ajax({
        url: "/search/".concat(_this.options.modelId),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        type: 'PUT',
        data: JSON.stringify(templatePerms),
        context: this,
        success: function(data) {
            this.message('Success!', 'Updated', 'success');
            this.cleanup();
        }
    });

不要创建额外变量(例如,
\u this
),而是使用传递
this
作为:

类测试{
构造函数(){
this.options={};
this.options.modelId='1';
这是doIt();
}
doIt(){
$.ajax({
网址:'https://jsonplaceholder.typicode.com/posts/“+this.options.modelId,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
类型:'PUT'
})
.then(data=>this.success.call(this,data));
}
成功(数据){
此消息(数据);
}
信息(msg){
警报(msg.id);
}
}
新测试()

如果将其保存在
上下文中
,则可以通过
此.context
访问它。一个更好的问题是:为什么不
var\u that=this通过代码审查?这是一个相当标准的做法。顺便说一句,如果您正在构建url,那么我可能会将其设置在一个变量中,只使用该变量,而不是将其与
\u this.options
参考内联。但是,这在很大程度上是偏好/风格。有趣的是,
没有通过代码审查,但是滥用
concat()
确实通过了审查。问题应该是关于代码审查!谢谢大家的评论。实际上,我同意concat()在这里使用得很奇怪,但我不太清楚为什么我选择了这条路线。这里有一群后端人员在编写前端代码。“没有通过代码审查”-您的审查员肯定会告诉您首选哪种替代方案。如果他没有,问他,而不是我们。是的,但这仍然可以在AJAX函数的回调之外使用吗?这最终是我的问题。我最初的回答是肯定的,但根据你的问题,这里可能还有其他问题。。。我需要看到更多的代码,而不仅仅是
$.ajax()
调用。。。
success: function(data) {
    this.message('Success!', 'Updated', 'success');
    this.cleanup();
}.bind(this)