javascript里面的this

关于this的误解常常来源于我们经验,javascript里面的this,需要我们放下所有的经验,当作第一次学习this,一次就握住正确的,错误的理解有很多,我们不需要一一去分辨,握住一个正确理解就够了。

什么是this

this不是在书写代码的时候绑定的,这点要和词法作用域区分开来。,this是在运行的时候绑定的。this是一个基于函数调用为条件的“上下文对象”;跟在哪定义this没有任何关系。当函数调用的时候,会创建一个“执行上下文”,这个上下文对象包含了函数的调用,参数等信息,this是这个对象的属性,执行当前执行上下文。

 

this指向

①默认指向global  ②“use strict”下undefined   ③object调用,指向object  ④嵌入到系统的函数(例如setTimeout)不改变this指向  ⑤显示绑定call  ⑥系统函数提供了指定this的参数

另外一个需要注意:new关键字,普通的函数如果new了下,就变成构造函数了,这时会创建一个新的对象,this指向当前对象:

②this间接传递

③ES6里面引入了一种特殊的函数箭头函数=>,this是定义时候的指向

写在内置函数里面也是一样:

上面这种等效于:

 

Objects

javascript里面6中基础类型string,number,boolean,null,undefined,object,其中常常误解的是null,通过typeof null返回object,但是null是一种基础类型。

内置对象:String Number Boolean Object Function Array Date RegExp Error

 

本文参考原文:https://github.com/getify/You-Dont-Know-JS

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/1530
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注