学习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. 021. asp.net两个DataSet数据集的合并

    protected void Page_Load(object sender, EventArgs e) { DataSet dsSource = new DataSet(); //创建源数据集 Da ...

  2. 如何用js检查浏览器是否安装flash插件

    <script type="text/javascript" language="JavaScript"> //Powered By smvv @h ...

  3. PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰

    有朋友下载了PHP5.3,PHP5.4版本想加载mysql支持的时候发现没有libmysql.dll文件,无法完成mysql配置,其实PHP5.3版本开始,使用mysqlnd库,不再使用libmysq ...

  4. Amazon后台登陆以及跟卖

    亚马逊模拟登陆,这里使用的是selenium来登陆,并判断是否登陆成功,以及是否有验证码,并破解验证码登陆. 跟卖主要解决的难题是selenium的新窗口弹出问题,在 # 点击“出售您的” brows ...

  5. ORA-27101:shared memory realm does not exist的问题

    ORA-27101:shared memory realm does not exist的问题 登陆SQLPlus时出现: ORA-01034:ORACLE not avaiable ORA-2710 ...

  6. Eclipse给方法分配足够的内存

    junit测试 VM parameters -Xmx1024M -XX:PermSize=128m -XX:MaxPermSize=256m

  7. BouncyCastle产生一个PKCS#12规范的PFX/p12证书

    RT,在C#中实现,依赖.netFramework2.0 BouncyCastle中提供了PKCS12Store,Pkcs12StoreBuilder,AsymmetricKeyEntry,X509C ...

  8. [转]开源那些事儿(四)-如何使用CodePlex进行项目管理

    本文版权信息作者:Jake Lin(Jake's Blog on 博客园) 出处:http://www.cnblogs.com/procoder/archive/2010/02/10/About-Op ...

  9. 提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll

    新版本SQLITE,如果下载Precompiled Binaries版会出现提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll. 下载Prec ...

  10. golang一个深复制的库

    https://github.com/mitchellh/copystructure