如下面例子:

复制代码 代码如下:
var testVar = {
            a : {
                test : 1
            }
        },
            test1 = {},
            test2 = {};

        test1.a = testVar.a;
        test2.a = testVar.a;
/*
        delete test1.a;
        console.log(test1.a); // undefined
        console.log(test2.a); // Object {test: 1}
        console.log(testVar.a); // Object {test: 1}
*/
        delete testVar.a;
        console.log(test1.a); // Object {test: 1}
        console.log(test2.a); // Object {test: 1}
        console.log(testVar.a); // undefined

通过测试可以看出,javascript的delete删除的对象如果是一个引用类型,那它删除的不是引用的对象,而是指向该引用对象的指针。因此,即使 delete testVar.a ,test1.a指向的对象仍然没有删除。

更多关于javascript delete关键字的原理,推荐:

http://perfectionkills.com/understanding-delete/

翻译版本:

http://www.ituring.com.cn/article/7620

标签:
js,delete,引用类型

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
狼山资源网 Copyright www.pvsay.com

评论“Javascript delete 引用类型对象”

暂无“Javascript delete 引用类型对象”评论...

RTX 5090要首发 性能要翻倍!三星展示GDDR7显存

三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。

首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。

据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。