JS中改变this指向的两种方法
程序员文章站
2022-06-22 11:41:05
JS中改变this指向的两种方法thisthis是javascript的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍两种改变this指向的方式:1.call()call(thisObj[, arg1[, arg2[, …]]])第一个参数就是要更改this指向的对象,为必选参数; 之后的参数要根据调用的函数是否需要传入参数(为可选的)例:...
JS中改变this指向的两种方法
this
this是javascript的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。
this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍两种改变this指向的方式:
1.call()
call(thisObj[, arg1[, arg2[, …]]])
第一个参数就是要更改this指向的对象,为必选参数; 之后的参数要根据调用的函数是否需要传入参数(为可选的)
例:
var name = 'hanmeimei';
function fn() {
console.log(this.name);//此时this指向的是window中的name,打印的是hanmeimei
}
fn();//hanmeimei
var obj = {
name: "lilei",
fn: function () {
console.log(name);
}
}
obj.fn();//此时还是指向的是window中的name 还是hanmeimei
fn.call(obj);//将this的指向改为obj中的name 打印的是lilei
call()的传参
例:
var name = 'hanmeimei';
function fn(x, y) {
console.log(this.name, x, y);
};
var obj = {
name: 'lilei',
say: function () {
console.log(name);
}
}
say.call(obj, 'one', 'two');//打印lilei one two 使用call()将参数x,y改成了one two
2.apply()
apply(thisObj[,argArray])
和call()同样第一个参数就是要更改this指向的对象,为必选参数; 之后的参数要根据调用的函数是否需要传入参数(为可选的)。apply的作用和call一样,不同的是传参的形式。apply需要以数组的形式传递参数
例:
appl()的传参
var name = 'hanmeimei';
function fn(x, y) {
console.log(this.name, x, y);
};
var obj = {
name: 'lilei',
say: function () {
console.log(name);
}
}
say.call(obj, ['one', 'two']);//打印lilei one two 使用appl()将参数x,y改成了one two
以上就是对于改变this指向的两种方法。
本文地址:https://blog.csdn.net/zzh1251994430/article/details/107900145