1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JS中改变this指向的两种方法

JS中改变this指向的两种方法

时间:2018-11-26 12:40:26

相关推荐

JS中改变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();//hanmeimeivar obj = {name: "lilei",fn: function () {console.log(name);}}obj.fn();//此时还是指向的是window中的name 还是hanmeimeifn.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.apply(obj, ['one', 'two']);//打印lilei one two 使用appl()将参数x,y改成了one two

以上就是对于改变this指向的两种方法。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。