学习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; //true
alert(flower.name); //undefined

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

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

二、javascript delete一些特性

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

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

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);

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; //true
alert(flower) //undefined

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

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

javascript delete方法的更多相关文章

  1. 【译】你应该了解的JavaScript数组方法

    让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...

  2. 松软科技web课堂:JavaScript 数组方法

    JavaScript 数组的力量隐藏在数组方法中. 把数组转换为字符串 JavaScript 方法 toString() 把数组转换为数组值(逗号分隔)的字符串. 实例 var fruits = [& ...

  3. JavaScript - reduce方法,reduceRight方法 (Array)

    JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...

  4. ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法

    原文 Examining the Details and Delete methods 作者 Rick Anderson 翻译 谢炀(Kiler) 校对 许登洋(Seay).姚阿勇(Mr.Yao) 打 ...

  5. ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  6. JavaScript slice() 方法

    JavaScript slice() 方法  JavaScript Array 对象 实例 在数组中读取元素: var fruits = ["Banana", "Oran ...

  7. JavaScript toLocaleString() 方法

    JavaScript toLocaleString() 方法 JavaScript Array 对象 定义和用法 把数组转换为本地字符串. 语法 arrayObject.toLocaleString( ...

  8. 关于JavaScript lastIndexOf() 方法 w3school.com.cn写的不一定全对

    关于JavaScript lastIndexOf() 方法 w3school.com.cn的表述是 定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的 ...

  9. javascript一些方法兼容

    javascript一些方法兼容 标签(空格分隔): javascript 方法收集 [TOC] Object.keys 参考地址 if (!Object.keys) Object.keys = fu ...

随机推荐

  1. Mysql函数FIND_IN_SET()的使用方法

    有了FIND_IN_SET这个函数.我们可以设计一个如:一只手机即是智能机,又是Andriod系统的. 比如:有个产品表里有一个type字段,他存储的是产品(手机)类型,有 1.智能机,2.Andri ...

  2. kaptcha随机验证码的使用详解,超实用

    效果图: 官方地址:https://code.google.com/p/kaptcha/w/list 1.把下载的kaptcha-2.3.2.jar添加到lib中 2.配置web.xml增加servl ...

  3. Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

    Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...

  4. mongodb不同版本之间有很大的差异

    今天主要说下我为了给mongodb数据库添加authorization,大家应该知道,mongo默认是无auth运行的.这可能是方便小伙伴学习命令吧. 由于之前发布的一个项目,在亚马逊的云上,处于内部 ...

  5. IOS开发-UIBarButtonItem系统自带图标总结

    1.这四个返回的是后面的单词. UIBarButtonSystemItemDone UIBarButtonSystemItemCancel UIBarButtonSystemItemEdit UIBa ...

  6. 【linux】windows和linux编码相互转换

    windows-->linux:dos2unix  file linux-->windows:unix2dos  file

  7. c# 中的多线程和异步

    前言: 1.异步和多线程有区别吗? 答案:多线程可以说是实现异步的一种方法方法,两者的共同目的:使主线程保持对用户操作的实时响应,如点击.拖拽.输入字符等.使主程序看起来实时都保持着等待用户响应的状态 ...

  8. js禁止从浏览器缓存读取消息

    $.ajaxSetup ({ cache: false //设置成false将不会从浏览器缓存读取信息 });

  9. 调用wcf 得不到HttpWebResponse.ContentLength的长度

    HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(strUrl); wreq.Timeout = _httpTimeout * ; wre ...

  10. linux时间管理

    /etc/sysconfig/clock         该配置文件可用来设置用户选择何种方式显示时间.如果硬件时钟为本地时间,则UTC设为0,并且不用设置环境变量TZ.如果硬件时钟为UTC时间,则要 ...