(1)通过调用call函数
var obj = {
name: '郭靖',
fun: function(n1,n2){
let age = n1
let height = n2
console.log('姓名:',this.name); //this指向obj
console.log('年龄:',age);
console.log('身高:',height);
}
}
var obj2 = {
name : '杨康'
}
obj.fun(21,180) //未劫持
console.log('------------------');
obj.fun.call(obj2,18,155) //通过调用call函数将fun函数中的this进行劫持,this指向obj2
(2)通过调用apply函数
var obj = {
name: '郭靖',
fun: function (n1, n2) {
let age = n1
let height = n2
console.log('姓名:', this.name); //this指向obj
console.log('年龄:', age);
console.log('身高:', height);
}
}
var obj2 = {
name: '杨康'
}
obj.fun(21,'180cm') //未劫持
console.log('---------------');
obj.fun.apply(obj2,[18,'155cm']) //通过调用apply函数将fun函数中的this进行劫持,this指向obj2
(3)通过调用bind函数
let obj2 = {
name: '杨康',
age: 21,
height: '180cm'
}
let obj = {
name: '郭靖',
age: 18,
height: '155cm',
fun: function(){
console.log('姓名:',this.name); //this指向obj
console.log('年龄:',this.age);
console.log('身高:',this.height);
}.bind(obj2)
}
obj.fun()