- call 接收多個(gè)參數(shù)蒸殿,第一個(gè)參數(shù)是要指向的對(duì)象宏所,后面的參數(shù)是方法所需要的形參值,call的第一個(gè)參數(shù)不傳或者是null,undefind,默認(rèn)傳參window全局對(duì)象
const obj = {
names: '小明',
fn: function (sex, age) {
console.log(this.names, sex, age);
}
}
const obj2 = {
names: '小紅',
}
obj.fn.call(obj2, '女', 19) //小紅 女 19
obj.fn.call(this, '女', 19)//undefined "女" 19 this指向window全局對(duì)象
- apply 接收兩個(gè)參數(shù)摊溶,第一個(gè)參數(shù)是要指向的對(duì)象,第二參數(shù)為一個(gè)數(shù)組莫换,數(shù)組里面?zhèn)鞣椒ㄋ枰男螀⒅担琣pply的第一個(gè)參數(shù)不傳或者是null,undefind,默認(rèn)傳參window全局對(duì)象
const obj = {
names: '小明',
fn: function (sex, age) {
console.log(this.names, sex, age);
}
}
const obj2 = {
names: '小紅',
}
obj.fn.apply(obj2,[ '女', 19])
- bind 與前面兩者有所區(qū)別拉岁,區(qū)別在于前面兩者是自動(dòng)執(zhí)行,后者是手動(dòng)執(zhí)行喊暖,第一個(gè)參數(shù)不傳或是null,undefind,默認(rèn)傳參window全局對(duì)象
const obj = {
names: '小明',
fn: function (sex, age) {
console.log(this.names, sex, age);
}
}
const obj2 = {
names: '小紅',
}
//調(diào)用一次
const fn = obj.fn.bind(obj2, '女', 19)
fn()
//調(diào)用多次
const fn2 = obj.fn.bind(obj2)
fn('女', 19)
fn('男', 19)