大型解决方案的全球原型(JavaScript/Node)



有没有在模块化JavaScript中为全局作用域编写Array、Number等类的原型的最佳实践?

例如,我有一个create-react-app应用程序,我想找到任何将原型添加到全局范围的好方法。

arrayHelpers.js

Array.prototype.unique = () => {
//... some code
};

SomeComponent.js

export default const SomeComponent = () => {
const someArray = ["foo", "bar", "foo"];
const someArrayThatHasOnlyUniqueItems = someArray.unique(); // ["foo", bar"]
// ... more code 
};

我不想使用像unique(array(这样的经典函数,因为原型更干净、更容易使用。

此外,将任何文件导入每个组件并不是最好的方法。

扩展原生原型是非常不受欢迎的。这就是你破坏互联网的方式!

您可以通过扩展现有的数组类型来创建自定义数组类型(在这种情况下,您必须在需要创建的每个文件中导入自定义数组(:

class MyArray extends Array {
function unique() {
//...
}
}
const someArray = new MyArray("foo", "bar")

您可以扩展Array的Symbols原型(在这种情况下,您必须在使用该函数所需的每个文件中导入Symbol(:

const unique = new Symbol('unique')
Array.prototype[unique] = () => { ... }
// ...
someArray[unique]()

但最好的方法可能是简单地将其作为一个纯粹的独立功能:

function unique(array) {
// ...
}
unique(someArray)

是的,它很无聊,就像大多数好的代码一样

是的,它没有那么甜(但如果你喜欢糖,你可以随时编写自己的Babel插件(。

是的,你必须在任何地方导入它(大多数JS项目在每个文件上都有很多导入(。

是的,这就是方法。

最新更新