javascript - 写入 __proto__ 对象
问题描述
假设我有一个像这样的对象:
const obj1 = {foo:'bar'};
然后我创建一个“副本”,(obj1
现在是原型)obj2
:
const obj2 = Object.create(obj1);
如果我打电话
obj2.foo = 3;
或者
obj2.x = {};
我的问题是 - 将obj1
永远被写入,还是永远不会被写入?据我所知,只有顶层对象会被写入——原型对象永远不会被修改。
换句话说,在任何情况下,我在哪里设置属性 obj2,obj1 会被修改?
解决方案
是否有任何情况下我在哪里设置属性
obj2
,obj1
会被修改?
仅当obj1
定义了一个被继承的 setter 属性时obj2
(具体发生的情况取决于 setter 的实现)。否则,属性分配obj2
将始终在obj2
其自身上创建/更改属性。
推荐阅读
- amazon-web-services - AWS API Gateway - 内部访问
- python - 电报机器人向自己发送消息但不在公共组中
- html - 我如何在 explorer 11 中使用 FrameSet?
- selenium - 使用 Selenium 框架截屏时发生“TypeError: rootNode is null”
- r - 只有当它们与上面和下面的行相同时,如何删除行?
- python - 过滤日期在多个给定日期的 +/-30 天内的数据
- ios - 从 -traitCollection 返回 nil,这在 Xcode 11 Beta 中是不允许的
- amazon-web-services - 如何解决错误““消息”:“用户:匿名无权执行:iam:PassRole on resource”
- vue.js - 如何居中对齐表格 - PDFMAKE
- c# - asp:GridView -> asp:TemplateField 调用公共方法在控件内部不可用