例如,在这个问题中,我认为__proto__作为一个 setter 意味着Object.seal不会改变__proto__setter 的行为,但我错了。
但是,这不适用于常规设置器,例如:
var o = {
get foo() { return this._foo },
set foo(val) { this._foo = val },
}
o.foo = 5
Object.seal(o)
o.foo = 10 // it still works!
console.log(o.foo)
console.log(o._foo)
// but this doesn't work:
o.__proto__ = { n: 5 }
console.log(o.n)
编写 setter 的用户是否希望检查密封/冻结/可扩展状态?在实践中似乎没有多少人这样做。不应该 Object.seal 然后禁用设置器,就像它一样__proto__?
所以,问题是,__proto__(等)有特殊情况吗?