给出以下代码段:
const myArray = ["foo", "bar", "baz"];
myArray.someProperty = "foobar";
console.log(myArray)
在Safari中,它将仅显示以下内容:
["foo", "bar", "baz"] (3)
[在其他浏览器中,例如Chrome和Firefox,它将显示someProperty
属性以及本机属性,例如length
:
Array(3)
0: "foo"
1: "bar"
2: "baz"
someProperty: "foobar"
length: 3
值得一提的是,console.dir
或console.log(JSON.stringify(myArray))
之类的内容无法显示这些属性。
Safari中是否有针对此限制的解决方法?显然,我可以执行console.log(myArray.someProperty)
,但是我的主要目标是checking数组具有哪些属性(我不是创建数组的人,而是由JS库创建的),所以这些属性对于我。
这是因为数组未在键值对中存储元素,因此someProperty
将用作键。而是将对象以及其他值存储在该数组中,如下所示:
const myArray = ["foo", "bar", "baz"];
myArray.push({
someProperty: "foobar"
});
console.log(myArray)