Skip to content

◷ 发表于: 2025-03-18

◷ 更新于: 2025-03-27

🅆 字数: 0

禁止实例访问原型链、构造函数

禁止实例通过__proto__访问原型链和构造函数,不影响原型链调用

javascript
function freezeProto(obj) {
  if (!Object.isExtensible(obj)) return
  Object.defineProperty(obj, '__proto__', {
    enumerable: false, // 控制属性是否可以枚举,默认值是false
    // writable: false, //控制属性是否可以被修改,默认值是false, 此属性个get/set属性冲突
    configurable: false, //控制属性是否可以被删除,默认值是false
    get: function () {
      return undefined
    },
    set: function () {
      throw new Error('__proto__ can not be written.')
    }
  })
}

基于 CC BY-NC-SA 4.0 许可发布