Reference Type
在 JavaScript 中,引用类型(Reference Type)是一种数据存储和操作的方式。
Reference Type 是 ECMA 中的一个“规范类型”。我们不能直接使用它,但它被用在 JavaScript 语言内部。
Reference Type 的值是一个三个值的组合 (base, propertyname, strict)
:
base
是对象。
在 JavaScript 中,所有对象或者函数都有所属对象。在全局上下文中,base 等同于全局对象(global);在函数的执行上下文中,base 等同于变量对象(vo)或活动对象(ao);而在处理对象属性时,base 等同于所属的对象(owerObject)。propertyname
是属性名。strict
在use strict
模式下为true
。
用伪代码表示:
var valueOfReferenceType = {
base: // 对象的所属对象
propertyname: // 属性名
};
示例:
let obj1 = {
name: 'Alice' };
console.log(obj1.name); // Alice
当访问 obj1.name
时,得到的引用类型的值中,base
就是 obj1
对象本身,propertyname
就是属性name
。
引用类型本身并不保存真正的值,而是存储对数据实际存储位置的引用(类似于指针)。这意味着多个变量可以引用同一个对象,对其中一个变量所做的修改会反映在其他引用该对象的变量上。
常见的引用类型包括对象(Object
)、数组(Array
)和函数(Function
)、日期(Date
)、正则表达式(RegExp
)。
以Object为例,解读Reference Type
在 JavaScript 中,对象(Object)是一种引用类型(Reference Type)。
当我们在读取对象的某个属性的时候,'.'
返回的准确来说不是属性的值,而是一个特殊的Reference Type
类型的值,在这个其中存着属性的值和它的来源对象。
示例:
let