舉個簡單的例子:var a={a:1,b:2}; delete a; //false, can"t be deleted.delete a.a; //true, the property "a" of object a can be deleted.another example without var;a = {a:1,b:2};delete a.a; //truedelete a;// true所以,可以總結下,可以刪除的,在global scope下沒有用var宣告的變數,陣列或物件,以及陣列或物件中某一(沒有特殊宣告的)屬性。不可刪除的,用var宣告的變數,以及預設存在的property,例如window.document, Math.PI等等。上面所指的特殊宣告其實就是指LZ所講的底層實現: 每個變數都是它所在的scope中的一個property, 在建立它時會預設的有幾個附加屬性,比較重要的是:value,writable,configurable,enumerable.他們的意思分別是變數的值,變數的值可覆蓋,屬性的名稱可改(包括刪除),可否用for in 列舉。其中後三項是布林型。繼續舉個例子,在ECMAScript Edition 5中,我們可以用Object.create()來自己控制這些屬性,例如,var a = Object.create({},{a:{value:1, enumerable:false,configurable:false,writable:false}}) ;具體引數含義可以MDN上看下。後面的就是自己定義的那些屬性。我們可以測試到:delete a.a; //false, because configurable is falsea.a =2; console.log(a.a); // 1, not 2, because writable is falsefor(var i in a) console.log(i); //undefined, meaning nothing. because enumerable is false.提示:類似Math.PI這種屬性,writable是false的,不可更改,所以給它賦值沒用作用。除了上述四個屬性外,還有兩個,set,get,他們是方法,作用可想而知,去MDN或ECMAScript SPEC看一下就明瞭了。希望對LZ有幫助啊。
舉個簡單的例子:var a={a:1,b:2}; delete a; //false, can"t be deleted.delete a.a; //true, the property "a" of object a can be deleted.another example without var;a = {a:1,b:2};delete a.a; //truedelete a;// true所以,可以總結下,可以刪除的,在global scope下沒有用var宣告的變數,陣列或物件,以及陣列或物件中某一(沒有特殊宣告的)屬性。不可刪除的,用var宣告的變數,以及預設存在的property,例如window.document, Math.PI等等。上面所指的特殊宣告其實就是指LZ所講的底層實現: 每個變數都是它所在的scope中的一個property, 在建立它時會預設的有幾個附加屬性,比較重要的是:value,writable,configurable,enumerable.他們的意思分別是變數的值,變數的值可覆蓋,屬性的名稱可改(包括刪除),可否用for in 列舉。其中後三項是布林型。繼續舉個例子,在ECMAScript Edition 5中,我們可以用Object.create()來自己控制這些屬性,例如,var a = Object.create({},{a:{value:1, enumerable:false,configurable:false,writable:false}}) ;具體引數含義可以MDN上看下。後面的就是自己定義的那些屬性。我們可以測試到:delete a.a; //false, because configurable is falsea.a =2; console.log(a.a); // 1, not 2, because writable is falsefor(var i in a) console.log(i); //undefined, meaning nothing. because enumerable is false.提示:類似Math.PI這種屬性,writable是false的,不可更改,所以給它賦值沒用作用。除了上述四個屬性外,還有兩個,set,get,他們是方法,作用可想而知,去MDN或ECMAScript SPEC看一下就明瞭了。希望對LZ有幫助啊。