意思就是:當繫結函式作為建構函式去呼叫的時候,它被提供的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...