Javascript 为什么[].slice.call()返回“空插槽”?
我试图将一个复杂的对象包装在一个长度为1的数组中,也就是说,对象是数组中唯一的条目,我希望在类构造函数中这样做。为了达到这一目的,我一直在玩[].slice.call,当我为了测试目的到处玩时,我在控制台中尝试了以下操作:Javascript 为什么[].slice.call()返回“空插槽”?,javascript,Javascript,我试图将一个复杂的对象包装在一个长度为1的数组中,也就是说,对象是数组中唯一的条目,我希望在类构造函数中这样做。为了达到这一目的,我一直在玩[].slice.call,当我为了测试目的到处玩时,我在控制台中尝试了以下操作: foo = {"a":{"a1":1},"b":{"b1":2},length: 2}; [].slice.call(foo); 我得到了一个长度为2的数组,其中有两个空插槽 考虑到[].slice.call{a:1,b:2,length:2}产生了[1,2],我本来希望得
foo = {"a":{"a1":1},"b":{"b1":2},length: 2};
[].slice.call(foo);
我得到了一个长度为2的数组,其中有两个空插槽
考虑到[].slice.call{a:1,b:2,length:2}产生了[1,2],我本来希望得到一个长度为2的数组,如下所示:
[{a1:1},{b1:2}],而不是两个空插槽。[].slice.call是否仅适用于一维对象,或者是否存在其他问题?如果有人能澄清,请提前向我们表示感谢 切片将仅迭代对象的数字索引属性。见:
让相对论开始吧。
所以,若start未定义,比如调用slice时不带参数,则relativeStart为0
然后,它将从relativeStart或0迭代数字标记,如果relativeStart为负值,直到对象的length属性值:
如果relativeStart为负,则k为maxlen+relativeStart,0;否则,让k成为Minestart,len。
八,。如果relativeEnd为负,则将final设为maxlen+relativeEnd,0;否则就让最后一场吧,伦
十,。当k.as控制台包装器{max height:100%!important;top:0;}给定[].slice.call{a:1,b:2,length:2}生成了[1,2],我无法复制。我得到2[空×2]我的错!我在简化,结果过度简化了。实际上是[].slice.call{0:a,1:b,length 2}产生了[a,b]。因此,我可以推测,被切片的对象需要提供索引作为键,以便[].slice.call工作?Fanstatic,非常感谢。如果我在一个构造函数中,并且试图使用参数的默认值来填充类属性,该怎么办。假设我有:构造函数public authData={prop1:{key1:3},prop2:{key1:4}。但是,我想要[{key1:4}],而不是{key1:4}?获取对象的Object.values,然后使用.map将每个对象包围在一个数组中,例如.maparr=>[arr]非常感谢。那太有帮助了。我明天会玩这个来确认。非常感谢!