1.2.3.21.call()、apply() 與 bind()
Last updated
Was this helpful?
Last updated
Was this helpful?
1.變數環境 (Variable environment), 外部環境 (Outer environment)
當在變數環境找不到變數時, 會到所參照的外部環境去尋找
2.this
不須宣告, 由JavaScript engine產生, this依據函數的呼叫方式會指向不同的物件
3.外部參照的環境
除了CODE property與name property外, 預設會有call(), apply(), bind()
程式1的this會指向person, 因為是
程式2的this會指向全域物件
程式3使用bind傳入this所想指向的物件, 並回傳一個新的函數
程式5使用call傳入this所想指向的物件以及參數, 並執行函數
程式6使用apply傳入this所想指向的物件以及參數, 並執行函數
程式7使用, apply傳入this所想指向的物件以及參數, 並執行函數
function borrowing
function currying
bind的第二個參數會作為新函數的第一個參數並永久使用
function currying
建立一個函數的拷貝並設定預設的參數
bind: 將this重新指向, 創造函數的拷貝並返回但不會執行
call: 將this重新指向並傳入其他參數, 並執行函數
apply: 將this重新指向並傳入其他參數, 並執行函數