首页 > 解决方案 > 写入 __proto__ 对象

问题描述

假设我有一个像这样的对象:

const obj1 = {foo:'bar'};

然后我创建一个“副本”,(obj1现在是原型obj2

const obj2 = Object.create(obj1);

如果我打电话

obj2.foo = 3;

或者

obj2.x = {};

我的问题是 - 将obj1永远被写入,还是永远不会被写入?据我所知,只有顶层对象会被写入——原型对象永远不会被修改。

换句话说,在任何情况下,我在哪里设置属性 obj2,obj1 会被修改?

标签: javascriptnode.js

解决方案


是否有任何情况下我在哪里设置属性obj2obj1会被修改?

仅当obj1定义了一个被继承的 setter 属性时obj2(具体发生的情况取决于 setter 的实现)。否则,属性分配obj2将始终在obj2其自身上创建/更改属性。


推荐阅读