当前位置:首页 > Windows程序 > 正文

delete window的属性,在ie8中报错问题

2021-03-25 Windows程序

由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法,如下:

1 var age = 292 function sayAge ( ){ 3   alert ( this.age ); 4 } 5 alert( window.age); //29 6 sayAge(); // 29 7 window.sayAge( ); //29

我们在全局作用域中定义了一个变量age和一个函数sayAge ( ),它们被自动归在了window对象名下。

由于sayAge( )存在于全局作用域中,因此this.age被映射到window.age, 最终显示的仍然是正确的结果。

 

抛开全局变量会成为window对象的属性不谈,, 定义全局变量与在window对象上直接定义属性还是有一点差别:全局变量不能通过delete操作符删除,而直接在window对象上的定义的属性可以。如下:

  

1 var age = 29; 2   window.color = ‘red’; 3   //在 IE < 9时抛出错误,在其他所有浏览器中都返回false 4   delete window.age; 5   //在 IE < 9时抛出错误,在其他所有浏览器中都返回true 6   delete window.color; 7 8   alert(window.age)// 29 9   alert( window.color) //undefined

 

刚才使用var 语句添加的window属性有一个名为[ [ Configurable ] ]的特性,这个特性的值别设置为false,因此这样定义的属性不可以通过delete操作符删除,IE8及更早版本在遇到使用delete删除 window属性的语句时,不管该属性最初是如何创建的,都会抛出错误,以示警告。IE9及更高版本不会抛出错误。

备注:

文章节选自《Javascript 高级程序设计》

delete window的属性,在ie8中报错问题

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67568.html