學習delete能夠參考下面兩個博客,寫的都很好,本文大部分參考與如下兩個博客javascript
http://www.cnblogs.com/windows7/archive/2010/03/28/1698387.htmlhtml
http://my.oschina.net/warmcafe/blog/75845java
1、javascript delete的做用windows
delete方法用於刪除對象的指定元素(包括變量和函數)瀏覽器
一、新建一個變量flower,並新添一個屬性變量name,而後delete該屬性函數
var flower={}; flower.name="oop"; delete flower.name; //true alert(flower.name); //undefined
二、在當前window變量中新添一個屬性aaa和函數bbb,而後deleteoop
aaa=1; alert(delete aaa); // true 等同於delete window.aaa alert(typeof aaa); // "undefined" 等同於typeof window.aaa bbb=function(){}; alert(delete bbb); // true 等同於delete window.bbb alert(typeof bbb); // "undefined" 等同於typeof window.bbb
2、javascript delete一些特性學習
一、不能刪除具備DontDelete特性的元素,那什麼是具備DontDelete特性的成員呢spa
例如var申明的變量,函數名申明的函數,對象的內置參數,函數的參數等;.net
1)var申明的變量
var x = 1; alert(delete x); // false alert(typeof x); // number
2)函數
function x(){} alert(delete x); // false alert(typeof x); // "function"
3)對象的內置參數(例如function的length屬性,arguments屬性)
function f(){ alert(delete arguments); // false alert(typeof arguments); // "object" alert(delete f.length); // false alert(typeof f.length); // "number" }
f();
4)函數的參數
function f(param1){ alert(delete param1); // false alert(typeof param1); // "number" } f(12);
二、能夠刪除eval中申明的元素
eval('var x = 1'); alert(delete x); //true alert(typeof x); //undefined eval('function f(){}'); alert(delete f); //true alert(typeof f); //undefined
3、delete 返回值false or true
delete 僅在刪除一個不能刪除的成員時,纔會返回false
而其餘狀況下,刪除如不存在的成員,或刪除成功也都會返回ture
也就是說 返回true 並不必定表明刪除成功
alert(delete a); // true //a是一個未申明且不存在的變量。 delete 依然返回的是true
4、不一樣瀏覽器之間的差別
在ie瀏覽器下 window.flower="monkey"; delete flower; //拋出異常 alert(flower); 在ff瀏覽器下 window.flower="monkey"; delete flower; //true alert(flower) //undefined
補充:在ie下可使用以下方式
with(window){flower=1}; 而後 delete flower (記住是delete flower,不是delete window.flower ,ie不容許那麼作)