美文网首页
js中的this

js中的this

作者: 索伯列夫 | 来源:发表于2018-11-08 13:45 被阅读0次

一句话,call的第一个参数

看几个例子
例1.

button1.onclick = function(){
  console.log(this)
}

这里的this是什么?
不要靠猜,是call的第一个参数,不知道去看MDN。
MDN的解释:处理器里的 this 值是触发事件的元素。

所以这里的this肯定就是button了

我们可以这样来改一改:

button1.onclick = function(){
  console.log(this)
}

button1.onclick.call({name: 'hua'})

这里就非常明显,this就是call的第一个参数。

例2.

button2.addEventListener('click',function(){
  console.log(this)
})

MDN的解释:通常来说this的值是触发事件的元素的引用
所以this肯定是button
例3.

$('ul').on('click', 'li', function(){
  console.log(this)
})

文档解释:当jQuery的调用处理程序时,this关键字指向的是当前正在执行事件的元素。对于直接事件而言,this 代表绑定事件的元素。对于代理事件而言,this 则代表了与 selector 相匹配的元素。
在这个例子中selector就是li,所以this就是li

例4.

function X(){
  return object = {
    name: 'object',
    f1(x){
      x.f2()  //调用options中的f2
    },
    f2(){
      console.log('object')
      console.log(this)
    }
  }
}

var options = {
  name: 'options',
  f1(){},
  f2(){
    console.log('options')
    console.log(this)  //打印
  }
}

var x = X()
x.f1(options)

会打印出什么呢?

做一个分析:x就是X返回的东西,也就是object,接下来调用object中的f1,并且传入options,那么f1中的x.f2(),实际上调用的是options中的f2,所以this指向options,打印出options

例5.
对上边的做一个修改

function X(){
  return object = {
    name: 'object',
    options: null,
    f1(x){      // 传入options
      this.options = x    //将自身的options也变为传入的options
      this.f2()     //this,还是自己,调用obejct的f2
    },
    f2(){
      this.options.f2.call(this)  //this.options是options,调用它的f2,并且将object当做this传过去
    }
  }
}

var options = {
  name: 'options',
  f1(){},
  f2(){
    console.log('options')
    console.log(this)  //打印
  }
}

var x = X()
x.f1(options)

相关文章

  • JavaScript 04 (do...while循环/for

    js循环,js循环嵌套,js do...while循环,js的for循环,js中的break,js中的contin...

  • iOS原生&JS交互

    OC 获取js中的key OC调用js方法 JS调用OC中不带参数的block JS调用OC中带参数的block ...

  • JS 对象

    JS对象 JS对象的意义和声明 在JS中,对象(OBJECT)是JS语言的核心概念,也是最重要的数据类型。在JS中...

  • 单引号和双引号

    JS中 js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和...

  • js中的this

    一句话,call的第一个参数 看几个例子例1. 这里的this是什么?不要靠猜,是call的第一个参数,不知道去看...

  • js 中的this

    首先js中函数的this在函数被调用时总是指向一个对象(this对象是在运行时基于函数的执行环境绑定的) 然后 它...

  • JS中的this

    JS中的this 众所周知,JS中this的代表的是当前函数调用者的上下文。JS是解释性的动态类型语言,函数在调用...

  • js中的!!

    !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false。 var...

  • js中的this

    目标:js中this的指向? 问题的引出 指出this指向什么 js中函数的三种调用形式 func(p1, p2)...

  • JS中的this

    初学JavaScript经常被this绕晕,所以我总结一下JavaScript中的this。首先声明本文讨论的是非...

网友评论

      本文标题:js中的this

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