属性名称上的 Javascript toString 方法

标签 javascript object

var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
object[foo] = 'anu';
console.log(object[bar]);

上面的代码输出“anu”。

toString 方法将非字符串对象类型转换为字符串对象。

在上面的代码中,object[bar] 将值输出为“anu”。

Document说“因为 foo 和 bar 都转换为相同的字符串”

我无法理解此代码中的 java 脚本 toString 方法。

谁能解释一下它是如何工作的吗?

最佳答案

当您使用 foo 的值作为属性名称时,它会调用 foo 上的 toString,如 object[foo. toString()] = 'anu',如果不重写,将为每个对象返回相同的值,即 '[object Object]'

所以实际上你有一个名为'[object Object]'的属性。 下面的 console.log 将确保您有一个名为 '[object Object]' 的属性。

var foo = {unique_prop: 1};

var object = {};

object[foo] = 'anu';

console.log(`foo.toString() - ${foo.toString()}`);
console.log(`object.toString() - ${object.toString()}`);
console.log(`object.toString() === foo.toString() ? - ${object.toString() === foo.toString()}`);

for(var prop in object) {
  console.log(prop);
}

关于属性名称上的 Javascript toString 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45936018/

相关文章:

javascript - 查询mongoose数据库中的数据

javascript - JavaScript 对象中的 this 关键字未指向该对象

Javascript - 对象数组,对象包含另一个数组和一个 int

javascript - 根据另一个数组对数组进行排序

c++ - 在C++中创建一个没有名字的对象

javascript - DOM 父元素与父节点

javascript - HTML5 客户端数据加密 - 我有哪些选择?

javascript - 插入媒体插件时如何防止tinymce删除URL源前缀?

java - Java设计:组件,模型,功能

javascript - 在字符串中检测 "pattern"并将其包装在 javascript(angular) 中的 <sup> 标签中