星空网 > 软件开发 > Java

可以改变this指向的方法

this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍三种方式:

1.call用作继承时:

function Parent(age){  this.name=['mike','jack','smith'];  this.age=age;}function Child(age){  Parent.call(this,age);//把this指向Parent,同时还可以传递参数}var test=new Child(21);console.log(test.age);//21console.log(test.name);test.name.push('bill');console.log(test.name);//mike,jack,smith,bill

2.call和apply都可以改变this指向,不过apply的第二个参数是散列分布,call则可以是一个数组

console.log(Math.max.apply(null,[1,2,3,4]));//4

apply() 方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是 Array 的实例,也可以是arguments 对象。call() 方法与 apply() 方法的作用相同,它们的区别仅在于接收参数的方式不同。对于 call()
方法而言,第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用call() 方法时,传递给函数的参数必须逐个列举出来。
3.ES5还定义了一个方法:bind(),它会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。如

window.color='red';var o={color:'blue'};function sayColor(){  console.log(this.color);}var objectSaycolor=sayColor.bind(o);//var objectSaycolor=sayColor.bind();objectSaycolor();//blue

在这里sayColor()调用bind()并传入对象o,创建了objectSayColor()函数。objectSayColor()函数的this值等于o,因此即使是在全局作用域中调用这个函数,也会看到blue。




原标题:可以改变this指向的方法

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

李佳佳:https://www.goluckyvip.com/tag/37361.html
李金招:https://www.goluckyvip.com/tag/37362.html
李景岩:https://www.goluckyvip.com/tag/37363.html
李俊峰:https://www.goluckyvip.com/tag/37364.html
李开亮:https://www.goluckyvip.com/tag/37365.html
李轲羿:https://www.goluckyvip.com/tag/37366.html
川藏线自驾游要怎么走才比较划算呢?:https://www.vstour.cn/a/411240.html
去日本入住酒店,东西随意用却有一个特殊“要:https://www.vstour.cn/a/411241.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流