javascript扩展预建原型性能

时间:2018-04-03 11:05:55

标签: javascript compilation prototype

许多人认为扩展预构建原型(如String,Array或Object)是不好的做法。

然而,其他人说它也有糟糕的性能命中 - 这是有道理的,因为我认为某种排序哈希表中的缓存方法现在已经失效(因为你可以改变那种方法)。

我想知道的是,如果您在执行开始时使用本机类型的所有原型扩展,并且在使用原型链中包含此原型的任何对象之前,是否仍会出现性能问题?

我问的原因是因为我正在编写一个编译为javascript的系统。我不关心javascript中的不良做法,但我绝对关心性能!

2 个答案:

答案 0 :(得分:1)

就像@Jonas所说,性能很可能不会成为一个问题。

扩展原型实际上是很多pollyfill的工作原理。

但是您要问的问题是,您是否计划使用任何第三方库,或者您是否计划将其转换为供其他人使用的库。如果是这样,请避免重写内置原型,因为它可能会破坏很多东西......

如果这只是在内部使用,你可以通过控制我看不出任何问题,只要你不对内置的内容做些蠢事。课程。

为了更加安全,我还会考虑为所有方法添加前缀,使其不太可能成为规范的一部分......例如.. String.prototype.myCaptializer,我非常怀疑这将成为规范的一部分。

答案 1 :(得分:0)

我不认为表现是真正的问题。真正的问题是:

  Object.prototype.toString = () => "whoops";

  console.log({} + ", whats going on here?!");