扩展原型数组
Extend proto Array
我对原型有疑问。
我正在做一个项目,我想为 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
最正确的选项是什么?
目前第三个选项(实现功能)是最佳选择,因为向内置原型添加功能是一个坏主意:如何解决歧义?如果其他库将同名函数添加到 Array.prototype
会发生什么?
第二个选项不会有歧义问题,但在#1 和#2 中你失去了使用语法声明数组的机会(即 []
)。
关于将代码放在哪里,这是主观的。我会把它放在一个名为 common
或 shared
的文件夹中,或者放在工作区的根目录中。
我对原型有疑问。 我正在做一个项目,我想为 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
最正确的选项是什么?
目前第三个选项(实现功能)是最佳选择,因为向内置原型添加功能是一个坏主意:如何解决歧义?如果其他库将同名函数添加到 Array.prototype
会发生什么?
第二个选项不会有歧义问题,但在#1 和#2 中你失去了使用语法声明数组的机会(即 []
)。
关于将代码放在哪里,这是主观的。我会把它放在一个名为 common
或 shared
的文件夹中,或者放在工作区的根目录中。