您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JavaScript Crockford的原型继承-嵌套对象的问题

JavaScript Crockford的原型继承-嵌套对象的问题

没有矛盾。只是不要考虑嵌套对象:对象的直接属性总是在其原型上或在自己的属性上。属性值是否为基元或对象与无关紧要。

所以,当你这样做

var parent = {
    x: {a:0}
};
var child = Object.create(parent);

child.x将引用与parent.x-一个{a:0}对象相同的对象。当您更改其属性时:

var prop_val = child.x; // == parent.x
prop_val.a = 1;

两者都会受到影响。要独立更改“嵌套”属性,您首先必须创建一个独立的对象:

child.x = {a:0};
child.x.a = 1;
parent.x.a; // still 0

你能做的是

child.x = Object.create(parent.x);
child.x.a = 1;
delete child.x.a; // (child.x).a == 0, because child.x inherits from parent.x
delete child.x; // (child).x.a == 0, because child inherits from parent

which means they are not absolutely independent - but still two different objects.

javascript 2022/1/1 18:16:16 有442人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶