1

题目

javascript的数据类型分为两类: 原始类型 和对象类型(又基本类型和引用类型)

原始类型包括:String, Boolean, Number, null, undefined
nullundefined是两个特殊的原始值,代表了各自特殊类型的唯一成员)

对象是属性和方法的集合,每个属性都由“名/值对”构成。全局对象是比较特殊的对象。
对象类型包括:普通对象(“命名值”的无序集合),特殊对象-数组(带编号值的有序集合),函数。

基本数据类型是按值访问的,因为可以操作保存在变量中的实际值。
引用类型的值是保存在内存中的对象。JS不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象,为此,应用类型的值是按照引用访问的。

var a = {"x": 1};    //对象是引用类型,这里把对象{"x": 1}的引用地址赋值给变量a
var b = a;           //把a所引用的对象地址赋值给b,此时a和b指向同一个对象
a.x = 2;             //把a所指向对象的属性x设置为2,此时该对象为{"x": 2}
b.x;                 //由于a和b指向同一个对象,所以b.x = a.x = 2

a = {"x":3};        //这里重新对a进行赋值,把一个新对象{"x": 3}的引用地址赋值给变量a,
                    //此时a指向这个新对象{"x": 3},而b仍然指向原来的对象{"x": 2}
console.log(b.x);   //这里输出2就顺理成章了

King
1.5k 声望33 粉丝

demo:[链接]