对象属性重命名

时间:2012-03-06 15:23:58

标签: javascript prototype

我有一个问题,为什么以下返回不一致的值

(function(ab, $, undefined ) {

    ​ab.cool = {
        nice: {
            funky: {
                sweet: false
            }    
        }
    };

    var reVal = ab.cool.nice.funky.sweet;
    reVal = true;

    console.log(reVal); //equals true
    console.log(ab.cool.nice.funky.sweet); //equals false

}( window.ab = window.ab || {}, jQuery ));​

我原以为两者都应该返回相同的值true

有人可以解释为什么会这样吗?它们被认为是不同的属性吗?

2 个答案:

答案 0 :(得分:3)

您不重命名变量,将值分配给另一个变量。

就像:

$foo = $bar = true;
$bar = false;

print $foo; // true
print $bar; // false

答案 1 :(得分:0)

正在发生的事情是ab.cool.nice.funky.sweet的值被复制到reVal。如果您尝试将ab.cool.nice.funky复制到reVal,则不会发生这种情况,因为这两个符号都会引用同一个对象。

这种区别是处理值类型(如布尔值或整数)的产物,与javascript中基本上意味着对象的引用类型不同。

点击此处了解详情:http://docstore.mik.ua/orelly/webprog/jscript/ch11_02.htm