Object.prototype全局注入方法是否应该在开发中尽量避免?

项目中需要平凡判断对象是否为空, 将isEmpty的方法通过Object.prototype注入,使所有对象都有isEmpty方法,随调随用.看似非常方便,会不会有隐患呢?

Object.defineProperty(Object.prototype, "isEmpty", {
  enumerable: false,
  configurable: false,
  get: function () {
    return function () {
      for (let key in this) {
        return false
      }
      return true
    }
    
  }
})
阅读 1.7k
2 个回答

频繁使用和挂载原型上是两个概念,开发中需要理清这两个概念,频繁使用应该是抽出函数,挂载原型上适合全部都需要,又或者这个是最后的解决方案和最优的。举个例子,例如 vue 中监听数组的变化,就在原来的原型的基础上,又做了一层处理,手动监听数组,这类场景才适合挂载原型上。

看个人喜好,我还是推荐按需引入的方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题