2015-07-13 49 views
0

有什麼辦法可以訪問ES6箭頭函數的call()方法的第一個參數嗎?訪問ES6箭頭函數的call()方法的第一個參數

var obj = { 
    getFn: function() { return() => { 
     //how to access bar here 
     return this.what; 
    } 
    }, 
    any: 1 
} 


var foo = obj.getFn(); 
var bar = { 
    any: 2 
}; 

foo.call(bar); 
+1

該代碼沒有多大意義:對象文字語法不正確。我假設你的意思是'getFn:()=>'。但'getFn'不會返回一個函數,除非'this.what'是一個函數。但是如果是這樣的話,那麼你永遠不會在函數內部訪問'bar',因爲'foo.call(bar)'會調用'this.what'指的是什麼,而不是'obj.getFn'。 –

+0

你是對的。有一個錯誤。 getFn返回新的箭頭函數。那麼,foo.call(bar)中的bar參數會消失嗎? – barba

+0

好的。不改變任何方式。 –

回答

1

我不知道你正在嘗試做的,但如果你問如何訪問通過.call通過this值,答案是:你不能

由於箭頭函數沒有自己的this,因此.call可以將該值設置爲。如果您希望函數具有其自己的this值,請勿使用箭頭函數。

0

正如費利克斯注意到的那樣,箭頭函數沒有自己的這個值,所以.call.apply方法不能改變箭頭函數的this

如果您想要訪問箭頭函數中的bar,可以通過參數傳遞它。

var obj = { 
    getFn: function() { 
    return (bar) => { 
     console.log(bar); 
     return this.what; 
    } 
    }, 
    any: 1 
}; 

var foo = obj.getFn(); 
var bar = { 
    any: 2 
}; 

foo(bar); // prints bar into console 
相關問題