博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中的this指向问题总结
阅读量:6832 次
发布时间:2019-06-26

本文共 870 字,大约阅读时间需要 2 分钟。

this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象

  • 1.函数执行的时候,首先看函数名前边是否有点 ‘·’,有的话点’·‘前边是谁是this就是谁,没有的话就是window
    
  • 2.自执行函数中this永远指的是window,严格模式下是undefined
  • 3.给元素的某一个事件绑定方法,当事件触发的时候执行对应的方法,方法中的this是当前的DOM对象
    
  • 4.在构造函数模式中、类中(函数体中)出现的this.xxx=xxx中的this是当前类的实例
    
  • 5.在原型模式中,this常用2种方法:
    • 在类中this.xxx=xxx;this是当前类的实例
    • 某一方法中的this,看点'.'前边是谁this就是谁
      • 先确定this指向
      • 把this替换成对应的代码
      • 按照原型链查找机制,一步一步查找
  • 6.call和apply强制改变this的指向->以上所有的this情况在遇到call/apply的时候都不好使,都已强制改变的为主obj.fn.call(1);//this->1

    一般情况下,我们执行call方法第一个传递的参数值是谁,那么fn中的this就是谁

    [在非严格模式下]
    第一个参数没有传递值、传递的是null、传递的是undefined fn中的this都是window
    [严格模式下]
    第一个参数传递的是谁this就是谁,传递null/undefined,fn中的this都是对应的null/undefined,不传递值默认也是undefined

一定要切记的一句话:你以为 你以为的 就是你以为的
ES6中this:

箭头函数中的this因为绑定了词法作用域,所以始终指向自身外的第一个this(由于自身没有声明this,所以会去作用域链上找this),也就是始终等于调用它的函数的this(以为这个this离它最近)。

转载于:https://www.cnblogs.com/Scar007/p/7248133.html

你可能感兴趣的文章
字节流高效缓冲区文件复制
查看>>
ColorMatrixColorFilter颜色过滤(离线用户的灰色头像处理)
查看>>
react:reducer-creator
查看>>
MyEclipse 总是弹出“multiple Errors have Occurred”
查看>>
sas实例合集
查看>>
C语言解释器的实现--存储结构(一)
查看>>
Java Eclipse常规设置
查看>>
ios官方菜单项目重点剖析附项目源码
查看>>
构建javaweb项目
查看>>
MVC5学习笔记
查看>>
大大大大板子
查看>>
使用博客园时,如何在自己的博客上显示头像?
查看>>
【作业】简单绘图程序
查看>>
二分查找
查看>>
java ee
查看>>
复制文字,链接,剪贴板的使用
查看>>
RSA加解密-2
查看>>
正向与反向代理的理解
查看>>
二分搜索法
查看>>
关于createTextRange和createRange的一些用法【转】
查看>>