我找到了这个代码片段。在这种情况下,有人可以解释.bind(this)
的目的吗?我们现在可以在哪里访问this
?在已解决的承诺中?
get: function(endpoint, params, callback) {
var cb = callback || angular.noop;
var deferred = $q.defer();
$http.get(
endpoint,
params
).
success(function(data) {
deferred.resolve(data);
return cb();
}).
error(function(err) {
deferred.reject(err);
return cb(err);
}.bind(this));
return deferred.promise;
}
答案 0 :(得分:1)
函数对象的bind(newContext)
方法的目的是返回一个带有上下文this
的新函数作为传递给bind()
的第一个参数。
例如:
var message = {text: 'I am the context'};
function tryMe() {
console.log(this);
}
tryMe(); // will print undefined (in strict mode) or global object
tryMe.bind(message)(); // will print '{text: 'I am the context'}'
在您的示例中,使用bind()
的想法是将this
方法的上下文get()
保留在错误处理程序中:
.error(function(err) {
deferred.reject(err);
//now use this.get() for example
return cb(err);
}.bind(this));
但是,在处理程序中没有调用与新上下文关联的方法。
在Gentle explanation of this
中查看更多详情。