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 相关文章推荐
可输入的下拉框
Jun 19 Javascript
Javascript 调试利器 Firebug使用详解六
Jul 05 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
实现变速回到顶部的JavaScript代码
May 09 Javascript
js控制容器隐藏出现防止样式变化的两种方法
Apr 25 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
vue js秒转天数小时分钟秒的实例代码
Aug 08 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 Javascript
node读写Excel操作实例分析
Nov 06 Javascript
基于Vue中的父子传值问题解决
Jul 27 Javascript
jQuery实现动态向上滚动
Dec 21 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
中国第一家无线电行
2021/03/01 无线电
网页上facebook分享功能具体实现
2014/01/26 PHP
php计算title标题相似比的方法
2015/07/29 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
详解Python import方法引入模块的实例
2017/08/02 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
python opencv进行图像拼接
2020/03/27 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
西雅图的买手店:Totokaelo
2019/10/19 全球购物
会计学生自我鉴定
2014/02/06 职场文书
销售经理岗位职责
2015/01/31 职场文书
李白故里导游词
2015/02/12 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技