为什么js变量显示[object object]但console.log()有效?

时间:2018-10-20 04:41:48

标签: javascript

我有一些密码

var weibo = { weibo: { url: '//testurl.com', icon: 'fa fa-weibo' } }
var mail = { mail: { url: '//testurl.com', icon: 'fa fa-envelope' } }
var github = { github: { url: '//testurl.com', icon: 'fa fa-github' } }

var [key] = Object.keys(weibo)
var name = weibo[key]
console.log(weibo[key])

我想从weibo获取对象并将其存储到名称变量中

但是名字显示[object object]

enter image description here

我没有使用What does [object Object] mean? (JavaScript)中的alert

key是字符串weibo enter image description here

我只想将变量存储到名称中,为什么chrome dev tools显示[object object]

console.log()有效,它显示了正确的对象信息 enter image description here

更新,请参阅我的gif


3 个答案:

答案 0 :(得分:3)

这让我思考了一段时间,结果发现浏览器(MDN:Window.name)中定义了一个window.name全局变量。

根据MDN: window.name会将所有值转换为它们的字符串表示形式 使用toString方法。

toString应用于对象时,输出将为[object object]

因此,要么将代码段封装在自己的范围内(可能在函数内),要么重命名name变量。

答案 1 :(得分:1)

使用

var key = Object.keys(weibo)
var name = key[0]

答案 2 :(得分:1)

这是因为您已创建“微博”作为对象,并将其传递给原始数据类型引用“名称”。