1.ECMASCRIPT包含两种不同的数据类型的值:基本数据类型和引用数据类型。基本数据类型指的是简单的数据段,而引用类型指的是那些由多个值构成的对象
2 .在进行变量赋值的时候,解析器必须确定这个值是基本数据类型还是引用数据类型
3.常见的5种基本数据类型为String、Number、Boolean、Null、undefined。基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。而引用类型的值是保存在内存中的对象中。JavaScript不允许直接访问内存中的位置,即不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。因此引用类型的值是按照引用来访问的
1. 动态的属性
对于引用类型的值,我们可以为其添加属性和方法,也可以改变其属性和方法,例如:
var Person = new Object();
Person.name = 'aaa'
console.log(Person.name)
// 返回aaa
只要对象不被删除或者销毁,这个属性就一直存在。但是我们不能给基本类型的值添加属性,尽管并不会导致任何错误
2. 复制变量值
对于基本数据类型,如果一个变量复制另一个变量的值的话,会在该变量上面创建一个新值,并将新的值复制给它,例如:
var num1 = 3;
var num2 = num1;
console.log(num2);
// 返回3
对于引用数据类型,当一个变量复制一个引用类型变量值的时候,同样会将存储在变量对象中的值复制一份放到为新变量分配的空间中,不同的是,这个值的副本其实是一个指针,而这个指针指向存储在堆中的一个对象。复制操作结束后,两个变量实际上引用同一个对象,因此,改变一个变量也会影响另一个变量,例如:
var o1 = new Object();
var o2 = o1;
o2.name = 'john'
console.log(o1.name);
// 返回 john