1. 程式人生 > 其它 >前端面試題31----call() bind() apply()

前端面試題31----call() bind() apply()

技術標籤:前端面試題指標js

call()、apply()、bind() 都是用來重定義 this 這個物件的

call

  • fn.call(所要指向的物件,引數1,引數2,…) 呼叫fn函式並修改this指向

apply

  • fn.apply(所要指向的物件,[引數1,引數2,…]) 呼叫fn函式。修改this指向

bind

  • bind不會直接呼叫函式 返回一個新的函式 修改了this指向,傳參和call一樣
let obj1={
   	name:'張三',
    age:20,
    hobby:['唱歌','跳舞'],
    score(math,english,chinese){
        console.
log(`${this.name}今年${this.age},愛好是${this.hobby[0]}${this.hobby[1]},他的成績是${math},${english},${chinese}`); } } let obj2={ name:'李四', age:18, hobby:['打遊戲','睡覺'], score(math,english,chinese){ console.log(this.name+math); } } obj1.score.call(obj2,100,100,100); obj1.score.apply(obj2,
[88,88,88]); let obj3=obj1.score.bind(obj2,60,60,60); obj3();

在這裡插入圖片描述
通過call、apply和bind修改了obj1中this的指向,使obj1中的this指向obj2