看透JavaScript:原理、方法与实践
上QQ阅读APP看书,第一时间看更新

6.1 直接量的保存方式

之前在内存模型中介绍过,直接量直接使用两块内存来保存它们的名值对,而不像对象类型那样需要3块内存。明白了这一点我们就可以知道,直接量是各自保存各自的值,它们不会相互影响,例如下面的例子。

    var m = 5;
    var n = m;
    m = 7;
    console.log(n);   //5

这个例子中,虽然将m赋值给n,但只是将m的值赋给n,当m发生变化时,n并没有发生变化,这一点和对象类型是不同的。如果是对象类型,那么赋值的时候是将对象的地址赋给新值,当对象中的属性发生变化时两个对象都会发生变化,例如下面的例子。

    var obj = {m:5};
    var newObj = obj;
    obj.m = 7;
    console.log(newObj.m);   //7

在这个例子中,obj和newObj使用的是同一个对象,当obj中的m属性发生变化时,newObj中的m属性也会发生变化。