js对象和对象副本的问题,求解?

var obj = {proto: {a:1,b:2}};
function F(){};
F.prototype = obj.proto;
var f = new F();
obj.proto.c = 3;
obj.proto = {a:-1, b:-2};
console.log(f.a);//1
console.log(f.c);//3
delete F.prototype['a'];
console.log(f.a);//undefined
console.log(obj.proto.a);//-1
这个里面的console.log(f.a);//1输出1,但是 console.log(f.c);//3就输出3
怎么理解,这是为什么啊?




#前端工程师#
全部评论
var obj = {proto: {a:1,b:2}}; function F(){}; F.prototype = obj.proto; var f = new F(); obj.proto.c = 3; 执行到这里,原型变量和obj的指向 obj.proto = {a:-1, b:-2};执行完这步,指向关系
点赞 回复 分享
发布于 2016-09-09 12:35
obj.proto = {a:-1, b:-2}; 这个语句之后,obj.proto 和 F.prototype 已经没有关联了,两者的操作都是相互独立的,可以用===查看结果=。= f会引用F.prototype上的属性,所以对F.prototype做修改,会影响到f(前提是修改之前没有改变f上的同名属性值)
点赞 回复 分享
发布于 2016-09-09 11:17

相关推荐

昨天 14:58
门头沟学院 Java
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
我面试,她问我有女朋友没
不太迷人的反派_:不过对象,还会结合你老家,意向城市等等,看你是否稳定。哥们,别多想
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务