javascript - 使用 Symbol.for 改变原生原型
问题描述
所以,我在考虑这个问题,为了可读性和便利性,你在原生原型中添加了一些东西(比如,做 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
我的问题是:这种方法可能存在哪些陷阱?例如,如果我想以这种方式实现整个库,它会不会显着影响我的脚本的性能?
解决方案
推荐阅读
- sql-server - 如何将聚集索引扫描转换为聚集索引搜索
- informatica-powercenter - 如何将值从一张表传递到映射变量或映射表达式?
- django - 多对多字段更改过多的 api 调用
- python - '_' 在这里做什么?
- regex - 无法使用日志轮换从选定的日志文件中搜索字符串
- c# - Unity 变换点返回错误值
- string - 如何在飞镖编程中合并列表中的相似项目?
- javascript - 关于解构对象。为什么它们未定义?
- git - git 如何解析 user.email 和 password 来认证用户?
- python - Pandas 合并具有相同名称但不同行的 DataFrame 列