美文网首页
如何改变this指向?

如何改变this指向?

作者: 阿油_爱周周 | 来源:发表于2019-10-31 18:42 被阅读0次

其实this并不一定是谁调用,指向谁。也可以改变this所指的方向,而改变this指向的方法有三个分别是call、apply、bind那么他们又有什么区别呢,我们一起来看看。

var a = '盲僧'
var arr = {
  name:this.a,
  aa:'猛龙摆尾',
  skill:function(){
    console.log(`${this.name}的大招是${this.aa}`)
  }
}
arr.skill()

这个时候打印出来的是:盲僧的大招是神龙摆尾。那么如何改变this的指向呢,我们继续往下看。

var a = '盲僧'
var arr = {
  name:this.a,
  aa:'神龙摆尾',
  skill:function(){
    console.log(`${this.name}的大招是${this.aa}`)
  }
}
var ss ={
  name:'亚索',
  aa:'狂风绝息斩'
}
arr.skill.call(ss)
arr.skill.apply(ss)
arr.skill.bind(ss)()

现在打印的是压缩的大招是狂风绝息斩,现在只是把this的指向改变为call、apply、bind的第一个参数,只有bind需要在后面加(),其他的并没有什么区别,那么我们接下来继续看。

var a = '盲僧'
var arr = {
  name:this.a,
  aa:'神龙摆尾',
  skill:function(rw,timo){
    console.log(`${this.name}的大招是${this.aa},${rw}可以输${timo}必须死`)
  }
}
var ss ={
  name:'亚索',
  aa:'狂风绝息斩'
}
arr.skill.call(ss,'团战','提莫')
arr.skill.apply(ss,['团战','提莫'])
arr.skill.bind(ss,'团战','提莫')()

这里打印出来的是亚索的大招是狂风绝息斩,团战可以输提莫必须死,当里边放参数的时候我们就可以看出他们三个的区别了,call就和平常一样就可以,apply里边放的是数组,bind就在后边加()就可以了,是不是很简单呢,今天就到这里了,谢谢大家,我们下次再见!

相关文章

  • this指向以及如何改变this指向

    当一个对象的函数被调用时,对象将被传递到执行上下文中,作为这个值。简单来说,就是function中的this永远指...

  • 如何改变this指向?

    其实this并不一定是谁调用,指向谁。也可以改变this所指的方向,而改变this指向的方法有三个分别是call、...

  • JavaScript中的call()、apply()、bind(

    面试题热点话题,this指向、如何改变this指向、call() apply() bind()区别,还有手写cal...

  • 自己实现call方法

    call方法的目的是为了改变this指向问题。 如何实现呢? 首先我们可以考虑一个问题,this指向在对象中是如何...

  • this指向以及改变this指向

    改变this指向 call() apply() bind()

  • forEach 和set数组去重

    forEach 如何做到不改变this指向 array.forEach(func, this); forEac...

  • 改变this指向

    每个函数都包含两个非继承来的方法call()和apply(); 使用call()或者apply(),可以改变thi...

  • 面试题集

    简述JS中this的指向和如何改变它的指向 javascript中,this是动态绑定的,它可以是全局对象、当前对...

  • 继承

    改变this指向 从this到继承 改变this指向的Function.prototype.bind(thisAr...

  • 改变this指向(转)

    我们在js中可以使用document.write()方法向网页中输入文本内容。如 document.write("...

网友评论

      本文标题:如何改变this指向?

      本文链接:https://www.haomeiwen.com/subject/pfptbctx.html