学习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不容许那么作)