Javascript delete 引用類型對象

 不多使用javascript的delete,最近由於一個小bug發現刪除引用類型對象的時候有一點不一樣。以下面例子:javascript

 

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指向的對象仍然沒有刪除。html

 

       更多關於javascript delete關鍵字的原理,推薦:java

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

       翻譯版本:測試

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

 

 

本文轉載自:http://www.cnblogs.com/Kingle/p/3344648.html翻譯

相關文章
相關標籤/搜索