首页 > 代码库 > javascript delete方法

javascript delete方法

学习delete可以参考下面两个博客,写的都很好,本文大部分参考与以下两个博客

http://www.cnblogs.com/windows7/archive/2010/03/28/1698387.html

http://my.oschina.net/warmcafe/blog/75845

 

一、javascript delete的作用

delete方法用于删除对象的指定元素(包括变量和函数)

1、新建一个变量flower,并新添一个属性变量name,然后delete该属性

var flower={};flower.name="oop";delete flower.name; //truealert(flower.name);  //undefined 

2、在当前window变量中新添一个属性aaa和函数bbb,然后delete

aaa=1;alert(delete aaa);  // true   等同于delete window.aaaalert(typeof aaa);  // "undefined"   等同于typeof window.aaabbb=function(){};alert(delete bbb);  // true   等同于delete window.bbbalert(typeof bbb);  // "undefined"   等同于typeof window.bbb

 

二、javascript delete一些特性

1、不能删除具有DontDelete特性的元素,那什么是具有DontDelete特性的成员呢

例如var申明的变量函数名申明的函数,对象的内置参数,函数的参数等;

1)var申明的变量

var x = 1;alert(delete x); // falsealert(typeof x); // number

2)函数

function x(){}alert(delete x); // falsealert(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);

 

2、可以删除eval中申明的元素

 eval(‘var x = 1‘); alert(delete x);  //true alert(typeof x); //undefined eval(‘function f(){}‘); alert(delete f);  //true alert(typeof f);  //undefined

 

三、delete 返回值false or true
delete 仅在删除一个不能删除的成员时,才会返回false
而其他情况下,删除如不存在的成员,或删除成功也都会返回ture
也就是说 返回true 并不一定代表删除成功

alert(delete a); // true //a是一个未申明且不存在的变量。 delete 依然返回的是true 

 

四、不同浏览器之间的差异

在ie浏览器下window.flower="monkey";delete flower; //抛出异常alert(flower);在ff浏览器下window.flower="monkey";delete flower; //truealert(flower) //undefined 

补充:在ie下可以使用如下方式

with(window){flower=1}; 然后 delete flower (记住是delete flower,不是delete window.flower ,ie不允许那么做)