首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

天啊这个该如何理解啊

2013-07-01 
天啊!这个该怎么理解啊!javascript中对象部分中的delete运算符中说delete只是断开属性和宿主对象的联系,

天啊!这个该怎么理解啊!
javascript中对象部分中的delete运算符中说"delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性"
但是再看这段代码

a = {p:{x:1}};
b = a.p;
delete a.p;

执行这段代码之后,为什么b.x的值依然是1呢?
按照我的理解,delete断开了属性p和宿主对象a的联系,也就是说对象a不再拥有属性p,那b.x还怎么调用a.p得到值1呢?
[解决办法]
a = {p:{x:1}};
b = a.p;
delete a.p;

你删除的是a的成员变量啊,也就是删除{x:1}的一个引用,而{x:1}对象的引用数是2,只要引用不为0,{x:1}就存在,

你这样试试
a = {p:{x:1}};
a.p = null;
delete a.p;
[解决办法]
b 被赋值 为 {x:1},也就是b.x = 1。

然后。。。就没然后了。删掉a不影响b。
[解决办法]
a= {p:{x:1}};
b=a.p;
delete a.p.x
console.log(b.x)

热点排行