js中的this的指向问题详解


Posted in Javascript onAugust 29, 2019

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

this永远指向的是最后调用它的对象,也就是看它执行的时候是谁调用的

普通函数中的this指向:

情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需要说明的是在js的严格版中this指向的不是window,但是我们这里不探讨严格版的问题,你想了解可以自行上网查找。

情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。

情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象

构造函数中的this指向:

function Fn(){
  this.title= "你好";
}
var a = new Fn();
console.log(a.title); //你好

首先new关键字会创建一个空的对象,然后会自动调用一个函数apply方法,将this指向这个空对象,这样的话函数内部的this就会被这个空的对象替代。

当构造函数的this碰到return时:

如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。

如果返回值是null, null也是对象,但是在这里this还是指向那个函数的实例,因为null比较特殊。

以上就是本次介绍的全部知识点内容,感谢大家对三水点靠木的支持。

Javascript 相关文章推荐
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 Javascript
AngularJs实现ng1.3+表单验证
Dec 10 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
jQuery实现二维码扫描功能
Jan 09 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
JS倒计时实例_天时分秒
Aug 22 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
js实现json数组分组合并操作示例
Feb 12 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
Aug 29 #Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
Aug 29 #Javascript
微信小程序实现购物车代码实例详解
Aug 29 #Javascript
vue图片加载失败时用默认图片替换的方法
Aug 29 #Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
Aug 29 #Javascript
Angular8路由守卫原理和使用方法
Aug 29 #Javascript
Vue中的循环及修改差值表达式的方法
Aug 29 #Javascript
You might like
PHP实现获取FLV文件的时间
2015/02/10 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
Python字符串替换实例分析
2015/05/11 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
python生成式的send()方法(详解)
2017/05/08 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
考博专家推荐信模板
2013/12/02 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
员工薪酬福利制度
2014/01/17 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
市场调查策划方案
2014/06/10 职场文书
班级标语大全
2014/06/21 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
2015年实习单位评语
2015/03/25 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
小学入学感言
2015/08/01 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python