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的public、private和privileged模式
Dec 28 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
vue 实现剪裁图片并上传服务器功能
Mar 01 Javascript
解决element UI 自定义传参的问题
Aug 22 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
VUE渲染后端返回含有script标签的html字符串示例
Oct 28 Javascript
JS实现json数组排序操作实例分析
Oct 28 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
Oct 30 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
ip签名探针
2006/10/09 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
改进Django中的表单的简单方法
2015/07/17 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
Python中请不要再用re.compile了
2019/06/30 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
安全承诺书范文
2014/03/26 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
地道战观后感2000字
2015/06/04 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers
Python开发简易五子棋小游戏
2022/05/02 Python