JavaScript中的call()和bind()是兩個常用的方法,用于在運行時改變函數的執行上下文。在開發中,我們常常需要向一個對象中注入一個函數并綁定它的執行上下文。這就需要使用到call()和bind()這兩個方法。
call()函數調用一個方法, 以指定一個作為當前對象的對象。因此我們可以借用一個對象的方法,獲得一個獨立于該對象的類的操作方式。call()和apply()的區別在于call()接收的是參數列表,而apply()接收的是數組。下面是一個例子:
var name = "小明"; var obj = { name: "張三" }; function say() { console.log(this.name); } say.call(obj); // 輸出: 張三
在上面的例子中,我們使用call()方法指定了函數say()的上下文為obj對象。call()函數通過指定的this對象去調用原來的函數,使函數中的this指向這個新的對象。
bind()函數會創建一個新函數,被調用時其this值由第一個參數指定,該函數的返回值與$i原函數的返回值相同,除了在使用 new 運算符時,當這個函數作為構造函數被調用時其 this 值始終顯式綁定到指定的第一個參數。
舉一個例子:
var obj2 = { name: "李四" }; function sayHello( age) { console.log(this.name + "年齡是:" + age); } var helloBind = sayHello.bind(obj2); helloBind(18); // 輸出: 李四年齡是:18
在上面的例子中,我們使用bind()方法創建了一個新函數helloBind,其上下文是obj2對象。這里我們也可以給helloBind函數傳遞一個參數age,這個參數會在調用helloBind函數時使用。
可以看到,call()和bind()方法都是非常實用的JavaScript方法。如果我們需要向一個對象注入函數并且綁定它的執行上下文,我們可以使用這兩個方法。它們都可以讓我們在運行時更改函數的執行上下文,從而讓函數獲得一個新的this對象。
上一篇php 7.0 亂碼
下一篇=php