所以,我正在考虑这个问题,你在本机原型中添加一些东西(比如说,做String.prototype.func = ...)是为了方便和阅读,因此有机会在这里找到一个灾难性的错误。未来。 我想出了一个想法,你怎么可能解决这个问题。使用ES6符号,您可以将任何方法,getter等添加到本机原型中,100%保证它们永远不会被覆盖。我的实现看起来像那样:
const sym = {
last: Symbol('last')
};
Object.defineProperty(Array.prototype, sym.last, {
get: function() {
return this[this.lenght - 1]
}
});
// usage
[1, 2, 3][sym.last]
// 3. Less readable than [1, 2, 3].last,
// but better, than making an independent function
我的问题是:这种方法可能存在哪些陷阱?例如,如果我想以这种方式实现整个库,它是否会在某种程度上影响我的脚本的性能?