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 监听textarea中按键事件
Oct 08 Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 Javascript
深入学习JavaScript中的原型prototype
Aug 13 Javascript
Jquery 分页插件之Jquery Pagination
Aug 25 Javascript
jQuery Dialog对话框事件用法实例分析
May 10 Javascript
获取当前按钮或者html的ID名称实例(推荐)
Jun 23 Javascript
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
Mar 29 Javascript
详解微信小程序支付流程与梳理
Jul 16 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 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 防注入函数(格式化数据)
2011/08/08 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
详解Vue的七种传值方式
2021/02/08 Vue.js
json跨域调用python的方法详解
2017/01/11 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
会议主持词
2014/03/17 职场文书
征兵宣传标语
2014/06/20 职场文书
大连导游词
2015/02/12 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
php修改word的实例方法
2021/11/17 PHP
使用HttpSessionListener监听器实战
2022/03/17 Java/Android