很少使用javascript的delete,最近因为一个小bug发现删除引用类型对象的时候有一点不同。如下面例子:

         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

最新文章

  1. eclipse上安装abator插件
  2. lua学习项目笔记
  3. google api , the problem of null refresh token
  4. [杂题]CSUOJ1276 Counting Route Sequence
  5. 10个加速Table Views开发的Tips(转)
  6. [汇编学习笔记][第十七章使用BIOS进行键盘输入和磁盘读写
  7. windows下取linux系统里面的文件
  8. HDOJ 2680 Dijkstra
  9. 解决ZF2_PATH environment
  10. 南京.NET线下活动后续—一对一技术交流
  11. HTTP协议初级入门
  12. 【Contest Hunter 5302】金字塔
  13. Golang的流程控制
  14. C#在SharePoint文档库下动态新增文件夹
  15. p67交换幺环为整环的充要条件
  16. yield send 的一些使用细节
  17. Node项目的Restful化
  18. centos 安装解压工作
  19. Codeforces 233 D - Table
  20. ionic3中创建pipe管道

热门文章

  1. How to log in to Amazon EC2 using PEM format from SecureCRT
  2. 配置Outlook Anywhere2010
  3. Android Volley框架的使用(二)
  4. Codeforces Round #311 (Div. 2) A. Ilya and Diplomas 水题
  5. C# 图片裁剪代码
  6. 【JavaScript】JavaScript回调函数
  7. javascript complete, onload
  8. Flex博客
  9. purge
  10. MHA 安装过程 原创