2016-10-27 69 views
0

我喜歡新的箭頭()=>{}語法,我想在任何可能的地方使用它。我知道箭頭函數指向外部這個概念。有沒有像正常功能一樣使用箭頭功能的方法?我只需要將this指向箭頭函數的內部。使用箭頭功能像一個正常的功能

我需要讓這樣的代碼:

let foo =() => { 
// "this" keyword should point to the inner of that function, not window object 
} 

作品這樣的代碼:

function foo() { 
// "this" keyword points to the inner of that class/object/function/whatever-it-calls-fix-me-if-am-i-wrong 
} 

它是可以實現的或者我需要堅持function關鍵字?

更具體地說,我需要this的東西來使它與Angular中的controllerAs語法一起工作,但那不是重點。這是JS比AngularJS問題更爲棘手的問題。

+5

不需要。您需要使用普通功能。 – SLaks

+0

「它從詞彙上捕捉到這個」 https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html – Korgrue

+0

你爲什麼要這樣做?第二個代碼更具說明性(易於閱讀)且更短。 – Bergi

回答

-1

如何使用鼠標功能與使用該

let _self = this; 
something.each(function() { 
    console.log(_self); 
    console.log(this); 
}); 

參考庫:https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html

+2

請注意,您引用的源代碼**不會說「如何使用箭頭函數與使用此庫的庫」。它說「提示:箭頭與使用'this'的庫函數」。提示基本上是一個警告,說它不起作用,並說明做什麼,而不是使用箭頭功能。這就是爲什麼你引用的例子不使用箭頭函數。 –

+0

它絕對如此。向下滾動到「提示:使用此庫的箭頭函數庫」 - 這恰好是我所拖動的腳本的一部分。 – Korgrue

+0

再次閱讀上面的評論。 –

1

是否存在使用箭頭功能就像正常功能的方法嗎?我只需要將這點指向箭頭函數的內部。

不是合理,沒有。其實只是沒有期間。 :-)使用function函數。

它不能工作,因爲箭頭功能關閉this。這意味着調用者無法設置this,在幾種情況下(例如原型函數,像jQuery這樣的庫的回調函數,設置this等),您需要設置this

+0

你認爲什麼不合理的解決方案?如果我們被允許得到不合理的,'toString' +'eval'可能會這樣做:-) – Bergi

+0

@Bergi:我意識到的第一個不合理的想法是我認識的是胡說。之後,是的,我正在考慮** ** toString' +'eval'(可能有一些消息)並決定不去那裏。 :-) –