javascript delete


======================================================
注:本文源代码点此下载
======================================================

javascript delete examplevar flower={};

flower.name="oop";

delete flower.name; //true

alert(flower.name);//undefined

创建一个名为flower的对象

flower具有成员name,值"oop";

delete 操作 删除这个成员

删除成功,已不存在flower.name这个成员

javascript delete example 2alert(isnan(5)); //false

delete isnan; //true

alert(isnan(5)); //undefined

delete操作符 甚至可以删除全局对象global的成员

不能删除 var 申明的变量var flower="monkey";

delete flower; //false

alert(flower); // "monkey"

用 var 申明的变量,delete 后 返回false.并没有删除成功 变量依然存在;

注意:delete仅在删除一个不能删除的成员是,才会返回false

ie下不能删除宿主对象下的变量在ie浏览器下

window.flower="monkey";

delete flower; //抛出异常

alert(flower);

在ff浏览器下

window.flower="monkey";

delete flower; //true

alert(flower) //undefined

可以看到 delete window的成员时,浏览器表现不一致

window是javascript的宿主对象

宿主对象可以是javascript执行环境自己定义的

在ie6-8浏览器中,不能delete window.flower,浏览器会提示你"对象不支持该操作",也就是不能删除window下成员

不能删除用函数名申明的函数function flower(){}

delete flower; //true

alert(flower);//undefined

结果显示 delete 不能删除 用函数名申明的函数

不能删除继承自原型的成员function flower(){};

flower.prototype.name="monkey";

var a1=new flower();

a1.name="a1_monkey"

alert(a1.name);//"a1_monkey"

delete a1.name;//ture

alert(a1.name);//"monkey"

a1是flower的实例,通过实例来删除原型的和父类的成员是不可行的~

如果一定要删除该属性("这里以name为例"),只能对原型进行操纵

delete a1.constructor.prototype.name;

dontdelete 特性delete 不能删除具有dontdelete特性的成员

那什么是具有dontdelete特性的成员呢

例如var 申明的变量,函数名申明的函数,function对象的length等极少数几个拥有dontdelete特性

delete 返回值false or true

delete 仅在删除一个不能删除的成员时,才会返回false

而其他情况下,删除如不存在的成员,或删除成功也都会返回ture

也就是说 返回true 并不一定代表删除成功

如 : 执行代码alert(delete a); // true

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

不同浏览器器之间的差异 (function(){

delete arguments; // false ,而在mozilla中返回的是true

typeof arguments; // "object"

})();

巧妙的利用eval删除var 申明的变量 eval('var flower = 1');

alert(window.flower) //1

alert(flower)// 1

delete flower; // true

alert(flower); // "undefined"

var a=function(){};

eval('var a = function(){}');

delete a; // true

alert(a); // "undefined"

eval后的全局变量,变得不具备dontdelete特性,可以用eval删除;

最后补充一条神奇的~睡觉前刚测试

window.flower=1;

delete flower 时对象会不支持此操作

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

这样 window.flower就被删除了:)


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值