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高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
Nov 14 Javascript
javascript中attribute和property的区别详解
Jun 05 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
Aug 24 Javascript
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
Vue computed 计算属性代码实例
Apr 22 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 01 Javascript
JavaScript Html实现移动端红包雨功能页面
Jan 10 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python实现简单温度转换的方法
2015/03/13 Python
python文件写入实例分析
2015/04/08 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
python中如何进行连乘计算
2020/05/28 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
审核会计岗位职责
2013/11/08 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
学年个人总结范文
2015/03/05 职场文书
暑期实践个人总结
2015/03/06 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
Python 内置函数速查表一览
2021/06/02 Python
php实例化对象的实例方法
2021/11/17 PHP