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 相关文章推荐
DOM相关内容速查手册
Feb 07 Javascript
javascript判断用户浏览器插件安装情况的代码
Jan 01 Javascript
js 函数的副作用分析
Aug 23 Javascript
使用JavaScript实现Java的List功能(实例讲解)
Nov 07 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
Nov 22 Javascript
Javascript遍历table中的元素示例代码
Jul 08 Javascript
js锁屏解屏通过对$.ajax进行封装实现
Jul 31 Javascript
详解ECMAScript typeof用法
Jul 25 Javascript
AngularJS与后端php的数据交互方法
Aug 13 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
JS实现使用POST方式发送请求
Aug 30 Javascript
Vue.js标签页组件使用方法详解
Oct 19 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
PHP闭包(Closure)使用详解
2013/05/02 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
PHP缓冲区用法总结
2016/02/14 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
python脚本实现查找webshell的方法
2014/07/31 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python selenium自动化测试模型图解
2020/04/15 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
家长会学生家长演讲稿
2013/12/29 职场文书
中国梦的演讲稿
2014/01/08 职场文书
校园活动策划书范文
2014/01/10 职场文书
会议活动邀请函
2014/01/27 职场文书
社区工作感言
2014/02/21 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
银行工作心得体会范文
2016/01/23 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
PO模式在selenium自动化测试框架的优势
2022/03/20 Python