bind函式模擬實現

2021-10-07 06:15:40 字數 1230 閱讀 7246

console.

log(function.prototype.bind)

// function

console.

log(function.prototype.

bind()

)// function

console.

log(function.prototype.bind.name)

// bind

console.

log(function.prototype.

bind()

.name)

// bound

以上可以看出bind是函式function原型鏈上的屬性,bind是乙個函式,bind執行完之後返還得還是乙個函式,改函式得名稱為bound

bind函式使用動態的繫結this,相比很多寫react的時候用過bind動態的繫結this,看下面的**

var foo =

function

getinfo

(***,age)

var bound = getinfo.

bind

(foo,

'女')

;var result =

bound

('12'

)// wucr 女 12

console.

log(result)

// false

根據以上執行得出結論

bind函式裡面的this指向它傳遞引數的第乙個引數物件

在呼叫bind的時候引數也被接收了,也就是說bound函式裡面的引數是別合併了

bind後的返回值函式,執行後返回值是原函式(original)的返回值。

第一版bind實現

function.prototype.

bind1

=function

(thisarg)

return bound

}

以上就是初版bind的實現,但是有乙個問題就是,bind返回的函式,有可能會被new 當作乙個構造函來用,所以還是需要補充一下的方法

function.prototype.

bindfn

=function

(thisarg)

else

}else

}return bound

}

bind函式 模擬實現JS的bind方法

先看一下bind是什麼?var obj obj typeof function.prototype.bind functiontypeof function.prototype.bind functionfunction.prototype.bind.name bindfunction.protot...

bind的模擬實現

var context context window var result 判斷是否有第二個引數 if arguments 1 else delete context.fn return result var foo function bar name,age bind 方法會建立乙個新的函式。當這...

深入JavaScript 模擬實現bind

bind bind 方法會建立乙個新函式。當這個新函式被呼叫時,bind 的第乙個引數將作為它執行時的 this,之後的一串行引數將會在傳遞的實參前傳入作為它的引數。由此我們可以首先得出 bind 函式的兩個特點 例1var foo function bar var bindfoo bar.bind...