2016-02-26 49 views
0

我找到了這個codesnippet。有人可以解釋在這種情況下.bind(this)的目的嗎?我們現在可以在哪裏訪問this?在解決的承諾?綁定()承諾錯誤函數 - javascript

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; 
} 

回答

1

功能對象的方法bind(newContext)的目的是用作爲傳遞給bind()所述第一參數的上下文this返回一個新的功能。

例如:

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()的想法是保持在錯誤處理程序中的get()方法的上下文this

.error(function(err) { 
    deferred.reject(err); 
    //now use this.get() for example 
    return cb(err); 
    }.bind(this)); 

但是沒有方法準用新的上下文在處理程序中被調用。

查看更多詳細信息在Gentle explanation of this