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 isArray 数组类型检测函数
Oct 08 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
Jan 17 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
原生javascript实现图片无缝滚动效果
Feb 12 Javascript
JQuery 传送中文乱码问题的简单解决办法
May 24 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 Javascript
vue2过滤器模糊查询方法
Sep 16 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
May 27 Javascript
vue 动态添加class,三个以上的条件做判断方式
Nov 02 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
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
理解JS事件循环
2016/01/07 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
JS验证字符串功能
2017/02/22 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
使用C++扩展Python的功能详解
2018/01/12 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
营业经理岗位职责
2013/11/10 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
机关门卫制度
2014/02/01 职场文书
协会周年庆活动方案
2014/08/26 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
清洁工工作总结
2015/08/11 职场文书
病假条格式范文
2015/08/17 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
Python数据结构之队列详解
2022/03/21 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python