js里的Array为什么能直接添加属性?

无意间发现了同事代码里有这样的写法,new了一个数组然后当对象用,为什么数组也能直接写属性呢?

作者:紫云飞 链接:https://www.zhihu.com/question/408959053/answer/1360392908 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

只要是对象值就能当成 plain object 来用,虽然一般没人这么干,比如还可以用正则对象

甚至数字对象

猜测你这个同事是不是从 PHP 来的,习惯把关联数组和索引数组都用数组来实现。

其实带非索引属性的数组对象 JS 内部 API 也会创建:

  1. 正则匹配的结果 ,比如 /./.exec('123') ,带了 input 属性等

  2. 模板字符串对象,比如 console.log`123`,带了 raw属性

最后更新于

这有帮助吗?