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 Prototype对象
Jan 07 Javascript
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
JavaScript 类似flash效果的立体图片浏览器
Feb 08 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
Jul 11 Javascript
jquery修改属性值实例代码(设置属性值)
Jan 06 Javascript
根据配置文件加载js依赖模块
Dec 29 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
Canvas 制作动态进度加载水球详解及实例代码
Dec 09 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 Javascript
微信小程序实现简单表格
Feb 14 Javascript
小程序自定义圆形进度条
Nov 17 Javascript
处理canvas绘制图片模糊问题
May 11 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
php一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
php5与php7的区别点总结
2019/10/11 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
详解Python中的type()方法的使用
2015/05/21 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
Python networkx包的实现
2020/02/14 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
中间件的定义
2016/08/09 面试题
年终考核评语
2014/01/19 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL