如何改变this 指向

1.apply

参数第一个用this,后面用数组。


function test(a,b){
	var c=a+b;
	console.log(this);
	console.log(c)
}
var obj = {
	name:'lisa',
	age:26
}
test.apply(obj,[1,2])

2.call

参数第一个this,第二位之后传递的参数

function test(a,b){
	var c=a+b;
	console.log(this);
	console.log(c)
}
var obj = {
	name:'lisa',
	age:26
}
test.call(obj,1,2)

3.bind

参数第一个this,第二位传递的参数,但是此函数调用,不会马上执行,返回值是一个含糊

function test(a,b){
	var c=a+b;
	console.log(this);
	console.log(c)
}
var obj = {
	name:'lisa',
	age:26
}
test.bind(obj,1,2)//此时没有执行,反返回了一个新的函数
test.bind(obj,1,2)()//此时才把返回的函数执行了


//参数是按照形参的顺序进行的
let a = {
    user:"追梦子",
    fn:function(e,d,f){
        console.log(this.user); //追梦子
        console.log(e,d,f); //10 1 2
    }
}
let b = a.fn;
let c = b.bind(a,10);
c(1,2);
posted @ 2022-04-22 13:36  会吃鱼的猫123  阅读(20)  评论(0编辑  收藏  举报