定义一个window 属性 如下所示
window["prop1"] = "1111111";之后, 执行 delete window["prop1"] 时总是出错,怎么回事呀?

解决方案 »

  1.   

    delete 只能用于删除 JavaScript 内建对象属性的删除,或从数组中删除一个元素。例如:
    String.empty = "";
    delete String.empty;而 window 是浏览器对象,delete 就失效了。
    但是可以按以下方式达到与 delete 完全相同的结果:alert(window.prop1);
    window.prop1 = "1111111";
    alert(window.prop1);
    window.prop1 = undefined;
    alert(window.prop1);
      

  2.   

    window["prop1"] = null;这样做
      

  3.   

    一旦通过window.prop="XXX"或者window["prop"]="XXX"为window添加一个自定义属性后,在该window对象中将一直存在!不可通过delete运算符删除,也不能通过window.prop=undefined删除。验证:
    <script language="javascript">
    function ForInDemo(){
    window.$_$="test"; //与window["$_$"]="test"等价
    window.$_$=undefined; //可以将undefined改为null看看
    if ($_$ in window)
    {
    alert("window存在属性:$_$");
       }
       else
       {
    alert("$_$ 属性不存在!");
       }
       var s="";
       for (mm in window)
    s+=mm+"<br>";
       document.write(s);
    }
    ForInDemo();
    </script>我们可以看到打印出来的window的属性中包含了自定义属性:$_$顺便解释一下:
    我们把 window.$_$=undefined;弹出属性存在,当我们window.$_$=null时候,弹出属性不存在,这是因为null表示“无值”或“无对象”。换句话说,如果某个变量的值为null,则该变量没有保存有效的数、字符串、Boolean、数组或对象。