在ES6中,我们最终可以继承像Array
这样的内置类:
class Bar extends Array {
...
}
在没有做任何特殊操作的情况下,通常返回Array
实例的Array
方法在通过Bar
调用时将返回Bar
个实例,因为它们会查找其构造函数通过Symbol.species
。
现在,我说我为Bar
定义了一个自定义构造函数。是否 简而言之,为Array
这样的内置子类提供用户定义的构造函数是否安全?
答案 0 :(得分:2)
是否保证
Array
的静态和成员方法如何调用构造函数?
是的,它已正确指定并确定下来。具体来说,所有原型方法(slice
,concat
,map
,filter
)都使用抽象ArraySpeciesCreate algorithm,它将使用单个参数调用构造函数:整数长度。 Array.of
和Array.from
做了类似的事情,虽然后者在从迭代器创建数组时没有传递长度。
concat
,slice
,from
和of
在分配元素length
和{{}后也会显式设置map
属性1}}不要。