this关键字
一、this关键字是一个非常重要的语法点,this在构造函数中表示实例对象,还可以用在其他场合,this的共同点就是总是返回一个对象,简单的说:this就是属性或者方法当前所在的对象
二、对象的属性是可以赋值给其他的对象,所以this的指向是可变的
三、实质
上面代码是将name对象赋值给arr,此时JaveScript引擎会先在内存里面,生成一个{name:'小红'}对象,然后把这个对象的内存地址赋值给变量arr,也就是说arr就是一个地址(reference),如果要读取arr.name,引擎先从obj拿到内存地址,然后再从该地址读出原始的对象,返回它的name属性
原始的对象以字典解构保存,每一个属性名都对应一个属性描述对象。比如上面的arr对象,实际是以下面的形式进行保存的
这样展示结构就很清楚,还有一种情况是属性的值可能是一个函数
这种引擎会将函数单独保存在内存中,然后再将函数地址赋值给arr属性的value属性
函数是一个单独的值,所以它可以在不同的环境(上下文)执行
三、使用场景
this的使用场景主要有以下几个
1.全局环境
全局环境使用this,指的就是顶层对象
上面代码说明,不管是不是在函数内部,只要在全局环境下运行,this指顶层对象
window
2.构造函数
构造函数中的this,指的是实例对象
3.对象的方法
this指向是方法运行时所在的对象,该方法复制给另一个对象,会改变this的指向
本文来自博客园,作者:danmo_xx,转载请注明原文链接:https://www.cnblogs.com/xx321/p/15630076.html