帶你手動實現bind方法,讓你收穫滿滿

2021-10-07 16:40:35 字數 1200 閱讀 4888

意思就是:當繫結函式作為建構函式去呼叫的時候,它被提供的this會被忽略掉。然後,就會像一般的建構函式一樣去新建物件例項了。

示例:

const obj =

function

student

(name)

const news = student.

bind

(obj,23)

;// obj被忽略

const newobj =

newnews(1

);console.

log(obj)

;// obj的name屬性值並未被改變

console.

log(newobj)

;// student

如果不用new操作建構函式去生成物件例項的話,那麼提供的this引數就會生效。

const obj =

function

student

(name)

const news = student.

bind

(obj,23)

;// obj的name屬性會被改變

const newobj =

news(1

);// 去掉了new操作符

console.

log(obj)

;// obj的name屬性值並未被改變

console.

log(newobj)

;// undefined

// 手動實現bind方法

// mdn:關於繫結函式,做了如下說明:指的是某一函式(目標函式)呼叫了bind()方法後,原地生成的函式,為繫結函式。

function.prototype.

mybind

=function

(context,

...args)

[typeof context]

;const

fbound

=function()

fbound.prototype = object.

create

(self.prototype)

;// new出來的例項的原型,應為目標函式的原型

return fbound;

};

js方法實現 bind

函式繫結 bind 方法建立乙個新的函式,在 bind 被呼叫時,這個新函式的 this 被指定為 bind 的第乙個引數,而其餘引數將作為新函式的引數,供呼叫時使用。var slice array.prototype.slice function.prototype.bind function r...

JS實現bind方法

bind 是在ecmascript5中新增的方法,用於將乙個函式繫結到乙個物件,成為其方法,還可以用於建構函式。const obj const getsum obj.getsum console.log getsum undefined上面 輸出了undefined,getsum 執行時內部的thi...

原生JS實現bind方法

bind方法建立乙個新函式。呼叫新函式時,this指向給定的物件,並且將給定的引數列表作為原函式的引數序列的前若干項。當使用new操作符建立bind函式的例項時,bind函式變成構造器,給定的物件引數失效,其餘引數仍然有效。function mybind function fn 臨時函式protot...