【问题标题】:Can we use object as a key of an object in Javascript?我们可以在Javascript中使用对象作为对象的键吗?
【发布时间】:2021-10-23 17:27:08
【问题描述】:

我在一次采访中得到了一个简短的 javascript 代码来给出它的输出,但我不确定它的输出是什么。他创建了一个var object 并使用数组数据结构将对象分配为该对象的索引。我在面试后确实对代码进行了控制台,但仍然不明白它是如何显示输出的。

这里是代码

var a = {};
b = { key: 'b'};
c = { key: 'c'};
a[b] = 123;
a[c] = 456;

console.log(a[b]); //what is the output of this console statement and explain why

任何人都可以用它显示的输出背后的javascript逻辑来解释吗? 提前致谢!

【问题讨论】:

  • 您的示例中没有数组。 abc 都是对象
  • 这能回答你的问题吗? Dynamically access object property using variable
  • 是的,但是当用数字分配它时,会使用数组数据结构
  • @DavidArias 我必须调查一下。
  • 您可以使用点符号 (b.key) 或括号符号 (b["key"]) 访问对象的属性。当属性名称不是有效标识符时(例如,名称中有空格),必须使用方括号表示法 -> Property accessors - JavaScript | MDN

标签: javascript arrays object variables data-structures


【解决方案1】:

用作键的toString 的对象是[object Object],这就是每次使用的对象

var a = {};
b = { key: 'b'};
c = { key: 'c'};
a[b] = 123; // sets a["[object Object]"]
console.log(b,a[b])
a[c] = 456; // ALSO sets a["[object Object]"]
console.log(b,a[b])
console.log(Object.keys(a))
console.log(a[b]);

console.log(a["[object Object]"]);

【讨论】:

    【解决方案2】:

    您可以查看a 对象,您可以在其中看到字符串对象(带有toString()

    [object Object]
    

    作为访问者。

    对象只能有字符串作为属性,并且使用最新的Symbol,也可以是这个。

    var a = {};
    b = { key: 'b'};
    c = { key: 'c'};
    a[b] = 123;
    a[c] = 456;
    
    console.log(a[b]); //what is the output of this console statement and explain why
    console.log(a);

    【讨论】:

      最近更新 更多