delete删除属性

 1 /*
 2         删除实例属性
 3         */
 4         function MyObject() {
 5             this.name = "我是实例的name";
 6         }
 7         var obj = new MyObject();
 8         alert(obj.name); //我是实例的name
 9         delete obj.name;
10         alert(obj.name); //undefined
11         /*
12         实例中的name被删除掉了.
13         删除原型属性
14         */
15         MyObject.prototype.age = 23;
16         alert(obj.age);//23
17         delete obj.age;
18         alert(obj.age); //23
19         /*
20         此时你会发现,delete无法删除掉原型中的属性,那么这个问题怎么解决呢?
21         */
22         delete obj.constructor.prototype.age;//或者 delete MyObject.prototype.age        
23         alert(obj.age); //undefind
24         /*
25         此时原型中的属性age才被真正的删除掉了.
26         注意,因为constructor的属性是可以改变的,所以在使用这个属性时候,要确保constructor指向你说需要的构造器函数.
27         delete在删除宿主属性时,会发生一些不和谐的因素.
28         */
29         window.app = "hello,大家好";
30         delete window.app;
31         /*
32         这个delete在火狐等浏览器中是可以执行的.
33         但是在IE下就会报错了.对象不支持此操作
34         */

 

posted @ 2014-04-09 15:14  思思博士  阅读(489)  评论(2编辑  收藏  举报