我有這樣的代碼:訪問外「這個」在Javascript中的排序方法
function some_object(...) {
this.data = {...};
this.do_something = function(...) {
var arr = [...];
arr.sort(function (a, b) {
return this.data[a] - this.data[b];
});
}
}
但是它不工作我想是因爲this
不能sort
訪問 - 另一this
被認爲是有某種原因,而不是this
封閉外部物體。
怎麼辦?感謝
感謝,但是這是在Javascript中所接受的方法?坦率地看起來像醜陋的黑客:-) – zaharpopov
也爲什麼你說「do_something」創建關閉?如果我在do_somethiing中打印'this',我會得到正確的對象 – zaharpopov
不,它根本就不是黑客。唯一的另一種方法是通過綁定到該函數來專門設置「this」的含義。但是,在這種情況下,'arr.sort'方法會調用,而您沒有機會設置「this」的含義。在類似於場景的對象中,我實際上在頂部聲明瞭'var base = this;',然後只使用'base'在函數範圍內引用該對象。這樣,我不必猜測何時使用'this'和什麼時候使用'base'。 –