【问题标题】:javascript - object [] notationjavascript - 对象 [] 表示法
【发布时间】:2015-11-22 05:19:26
【问题描述】:

开始学习javascript,目前正在学习对象主题。

<!DOCTYPE html>
<html>
<body>
<h3>object prop access</h3>
<p id="demo"></p>
<p id="test"></p>
<script>

    var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
    object[foo] = 'value1';

    //console.log(object[bar]);
    document.getElementById("demo").innerHTML = "Object property:"+object[bar];
    document.getElementById("test").innerHTML = "Object property object[foo]:"+object[foo];

    </script>
    </body>
    </html>

当我运行这个程序时,它会在单独的行中打印值 "value1" 、 "value1"。 我的问题是没有为“object”定义属性名称“bar”,那么为什么object[bar] 打印值“value1” - 分配给object[foo]

--Divyesh

【问题讨论】:

    标签: javascript html object


    【解决方案1】:

    因为对象属性有一个键和一个值。键始终是一个字符串。当您尝试为该键是变量并将其作为对象的值设置键时,它将具有被调用的对象/变量的 .toString 方法,在这种情况下将返回 [object Object]

    所以barfoo 在转换为字符串时是等价的。

    所以,你可以把它想象成像这样访问对象object["[object Object]"]

    bar.toString() // "[object Object]"

    foo.toString() // "[object Object]"

    【讨论】:

    • 感谢您的回复。我通过打印对象“Foo”和“Bar”来测试这个 toString() 方法的行为。但是我的问题是上面的代码设置了 object[foo] = "value1" 的属性。没有为对象“Object”定义属性“Bar”。 object[Bar] = "value1" 怎么也可以?
    • 我现在明白你的意思了。非常感谢。我看到基本上 object[foo] 或 object[bar] 等同于 object["[object Object]"]。所以如果 object[foo] = "value1" 所以它是 object[bar].
    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2019-07-21
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多