【发布时间】:2021-09-20 14:17:34
【问题描述】:
这是我的代码:
let obj = {};
obj.__proto__ = "some value";
console.log(obj.__proto__ == Object.prototype);
这是因为set __proto__,它规定了分配过程并只允许对象或null 是__proto__ 的值吗?
【问题讨论】:
标签: javascript object prototype
这是我的代码:
let obj = {};
obj.__proto__ = "some value";
console.log(obj.__proto__ == Object.prototype);
这是因为set __proto__,它规定了分配过程并只允许对象或null 是__proto__ 的值吗?
【问题讨论】:
标签: javascript object prototype
是的。 __proto__ setter 需要在第 2 步执行:
如果 Type(proto) 既不是 Object 也不是 Null,返回 undefined。
在这种情况下它什么都不做,并且之前的原型保持不变。
另请注意,__proto__ 已弃用,应避免使用setPrototypeOf(和getPrototypeOf),这会使错误更明确:
let obj = {};
Object.setPrototypeOf(obj, "some value");
【讨论】: