扩展proto数组

问题描述 投票:0回答:1

我对原型有疑问。我正在做一个项目,我想为Array创建一个小函数库,我有3种可能性。

扩展Array原型(但我明白不推荐)

Array.prototype.arrayMax = function () {
    return Math.max(...this)
}

创建Array的子​​类。

function MyArray(...args) {
    Object.setPrototypeOf(args,MyArray.prototype)
    return args;
}
MyArray.prototype = Object.create(Array.prototype);
MyArray.prototype.arrayMax = function () {
    return Math.max(...this)
}

使用Array传递参数的不同函数创建一个文件。

const arrayMin = arr => Math.min(...arr);

如果我们采用这个选项,我使用JS O.O,我的目录结构是Structure of directory

哪里可以添加我这个档案js。

什么是最正确的选择?

javascript prototype prototypal-inheritance prototype-programming
1个回答
1
投票

目前第三个选项(实现函数)是最优选的,因为向内置原型添加函数是个坏主意:如何解决模糊问题?如果其他库为Array.prototype添加了一个具有相同名称的函数,会发生什么?

第二个选项不会出现歧义问题,但在#1和#2中,您将失去使用语法声明数组的机会(即[])。

关于在哪里放置代码,这是主观的。我会将它放在一个名为commonshared的文件夹中,或者只放在工作区的根目录下。

© www.soinside.com 2019 - 2024. All rights reserved.