为什么我不能在这种情况下分配 属性 的值?
Why can't I assign the value of property in this case?
这是我的代码:
let obj = {};
obj.__proto__ = "some value";
console.log(obj.__proto__ == Object.prototype);
是否因为 set __proto__
规范了赋值过程,只允许对象或 null
成为 __proto__
的值?
是的。 __proto__
setter需要做的,在第2步:
If Type(proto) is neither Object nor Null, return undefined.
在这种情况下它什么都不做,之前的原型保持不变。
另请注意,__proto__
已弃用,应避免使用 setPrototypeOf
(和 getPrototypeOf
),这会使错误变得明确:
let obj = {};
Object.setPrototypeOf(obj, "some value");
这是我的代码:
let obj = {};
obj.__proto__ = "some value";
console.log(obj.__proto__ == Object.prototype);
是否因为 set __proto__
规范了赋值过程,只允许对象或 null
成为 __proto__
的值?
是的。 __proto__
setter需要做的,在第2步:
If Type(proto) is neither Object nor Null, return undefined.
在这种情况下它什么都不做,之前的原型保持不变。
另请注意,__proto__
已弃用,应避免使用 setPrototypeOf
(和 getPrototypeOf
),这会使错误变得明确:
let obj = {};
Object.setPrototypeOf(obj, "some value");