许多人认为扩展预构建原型(如String,Array或Object)是不好的做法。
然而,其他人说它也有糟糕的性能命中 - 这是有道理的,因为我认为某种排序哈希表中的缓存方法现在已经失效(因为你可以改变那种方法)。
我想知道的是,如果您在执行开始时使用本机类型的所有原型扩展,并且在使用原型链中包含此原型的任何对象之前,是否仍会出现性能问题?
我问的原因是因为我正在编写一个编译为javascript的系统。我不关心javascript中的不良做法,但我绝对关心性能!
答案 0 :(得分:1)
就像@Jonas所说,性能很可能不会成为一个问题。
扩展原型实际上是很多pollyfill的工作原理。
但是您要问的问题是,您是否计划使用任何第三方库,或者您是否计划将其转换为供其他人使用的库。如果是这样,请避免重写内置原型,因为它可能会破坏很多东西......
如果这只是在内部使用,你可以通过控制我看不出任何问题,只要你不对内置的内容做些蠢事。课程。
为了更加安全,我还会考虑为所有方法添加前缀,使其不太可能成为规范的一部分......例如.. String.prototype.myCaptializer
,我非常怀疑这将成为规范的一部分。
答案 1 :(得分:0)
我不认为表现是真正的问题。真正的问题是:
Object.prototype.toString = () => "whoops";
console.log({} + ", whats going on here?!");