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 相关文章推荐
javascript 获取表单file全路径
Dec 31 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
May 12 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
javascript入门之数组[新手必看]
Nov 21 Javascript
如何提高javascript加载速度
Dec 26 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
Jan 06 Javascript
JavaScript中object和Object的区别(详解)
Feb 27 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
Vue调用后端java接口的实例代码
Oct 28 Javascript
vue-cli 关闭热更新操作
Sep 18 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python3 logging日志封装实例
2020/04/08 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
linux下进程间通信的方式
2014/12/23 面试题
合伙经营协议书
2014/04/18 职场文书
禁止酒驾标语
2014/06/25 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
学校施工安全责任书
2015/01/29 职场文书
大学生实习推荐信
2015/03/27 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
实例详解Python的进程,线程和协程
2022/03/13 Python