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 相关文章推荐
FormValidate 表单验证功能代码更新并提供下载
Aug 23 Javascript
js常用代码段整理
Nov 30 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
Dec 02 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
Feb 06 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
AngularJs页面筛选标签小功能
Aug 01 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
纯JS实现可用于页码更换的飞页特效示例
May 21 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 Javascript
Node.js爬虫如何获取天气和每日问候详解
Aug 26 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
js图片处理示例代码
2014/05/12 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
python修改字典内key对应值的方法
2015/07/11 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
pandas中的series数据类型详解
2019/07/06 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
白酒市场开发计划书
2014/01/09 职场文书
大学班级文化建设方案
2014/05/06 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
感恩教师主题班会
2015/08/12 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书