javascript delete 使用示例代码

 更新时间:2010年03月29日 17:09:59   作者:  
javascript delete的一些技巧,主要是从对象中删除一个属性,或从数组中删除一个元素。具体的使用方法,可以参考下面的代码。
javascript delete example
复制代码 代码如下:

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

  创建一个名为flower的对象
  flower具有成员name,值"oop";
  delete 操作 删除这个成员
  删除成功,已不存在flower.name这个成员
javascript delete example 2
复制代码 代码如下:

alert(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就被删除了 :)

JavaScript delete操作符应用实例

相关文章

  • innerText 使用示例

    innerText 使用示例

    在元素间的文本就是通过对象.innerText,下面有个不错的示例,感兴趣的朋友可以参考下
    2014-01-01
  • 最实用的JS数组函数整理

    最实用的JS数组函数整理

    本篇文章小编给大家整理了非常全的JS数组函数以及相关的写法规则,希望能够对读者们起到帮助和参考。
    2017-12-12
  • JavaScript原型与实例详解

    JavaScript原型与实例详解

    这篇文章主要为大家介绍了JavaScript原型与实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • JavaScript字符串处理(String对象)详解

    JavaScript字符串处理(String对象)详解

    这篇文章主要介绍了JavaScript字符串处理(String对象)详解,本文列出并详细讲解了String对象的一些方法,需要的朋友可以参考下
    2014-10-10
  • JS 作用域与作用域链详解

    JS 作用域与作用域链详解

    这篇文章主要介绍了JS 作用域与作用域链详解,十分的细致全面,这里推荐给小伙伴们,有需要的朋友可以参考下。
    2015-04-04
  • Web Inspector:关于在 Sublime Text 中调试Js的介绍

    Web Inspector:关于在 Sublime Text 中调试Js的介绍

    本篇文章小编将为大家介绍,Web Inspector:关于在 Sublime Text 中调试Js的介绍。需要的朋友可以参考一下
    2013-04-04
  • JavaScript中Math对象方法使用概述

    JavaScript中Math对象方法使用概述

    JavaScript中Math对象方法如向上取整,有小数就整数部分加1,四舍五入、向下取整等等,下面为大家详细介绍下
    2014-01-01
  • javascript事件模型介绍

    javascript事件模型介绍

    在各种浏览器中存在三种事件模型:原始事件模型( original event model),DOM2事件模型,IE事件模型.其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE以外的所有主流浏览器支持。
    2016-05-05
  • JavaScript 之JS的组成与基本语法

    JavaScript 之JS的组成与基本语法

    这篇文章主要介绍了S的组成与基本语法,JS 主要是用来开发前端,但是也可以做别的,JS 现在是一个 "通用" 的编程语言,感兴趣的小伙伴可以参考阅读
    2023-04-04
  • js中Object.create实例用法详解

    js中Object.create实例用法详解

    在本篇文章里小编给大家整理的是一篇关于js中Object.create实例用法及相关基础内容,有兴趣的朋友们可以学习下。
    2021-10-10

最新评论