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 学习笔记(四)
Dec 31 Javascript
Jquery+WebService 校验账号是否已被注册的代码
Jul 12 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
Aug 26 Javascript
jquery中的on方法使用介绍
Dec 29 Javascript
jQuery中append()方法用法实例
Dec 25 Javascript
微信小程序 火车票查询实例讲解
Oct 17 Javascript
原生js编写基于面向对象的分页组件
Dec 05 Javascript
javascript实现延时显示提示框效果
Jun 01 Javascript
vue2里面ref的具体使用方法
Oct 27 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
Sep 02 Javascript
基于JQuery和DWR实现异步数据传递
Oct 16 jQuery
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
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
围观tangram js库
2010/12/28 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python 通配符删除文件的实例
2018/04/24 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
汽车专业毕业生推荐信
2013/11/12 职场文书
致长跑运动员广播稿
2014/01/31 职场文书
《胡杨》教学反思
2014/02/16 职场文书
创建文明学校实施方案
2014/03/11 职场文书
体育课外活动总结
2014/07/08 职场文书
老人节标语大全
2014/10/08 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
2015年新农合工作总结
2015/03/30 职场文书
信仰纪录片观后感
2015/06/08 职场文书
小学新课改心得体会
2016/01/22 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
Python各协议下socket黏包问题原理
2022/04/12 Python
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android