• 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; //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不允许那么做)
  • 相关阅读:
    3.18日
    线程的面试题
    关于instanceof测试遇到的问题
    spring
    自动登录代码
    Filter
    多态
    基于HTML,css,jQuery,JavaScript,MySQL搭建博客系统
    基于bootstrap+MySQL搭建动态网站
    基于bootstrap_网站汇总页面
  • 原文地址:https://www.cnblogs.com/king1302217/p/3793072.html
Copyright © 2020-2023  润新知