【问题标题】:Extend proto Array扩展原型数组
【发布时间】:2017-12-21 14:41:38
【问题描述】:

我对原型有疑问。 我正在做一个项目,我想为 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,我的目录结构是

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

什么是最正确的选择?

【问题讨论】:

    标签: javascript prototype prototypal-inheritance prototype-programming


    【解决方案1】:

    目前第三种选择(实现函数)是最佳选择,因为向内置原型添加函数是一个坏主意:如何解决歧义?如果其他库向Array.prototype添加同名函数会怎样?

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

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

    【讨论】:

    • @RamsésFernández 太好了!这都是关于良好做法的:)不客气
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多