在IE中,如何使用JS删除DOM对象的属性

JavaScript019

在IE中,如何使用JS删除DOM对象的属性,第1张

in判断的是对象的所有属性,包括对象实例及其原型的属性;

而hasOwnProperty则是判断对象实例的是否具有某个属性。

示例代码:

<script type="text/javascript"> function Person(){ } Person.prototype.name = "allen" var person = new Person() console.log(person.hasOwnProperty("name"))//false console.log("name" in person)//true console.log(person.name)//"allen"person.name = "justforse" console.log(person.hasOwnProperty("name"))//true console.log("name" in person)//true console.log(person.name)//"justforuse"delete person.name console.log(person.hasOwnProperty("name"))//false console.log("name" in person)//true console.log(person.name)//"allen" </script>

以上代码执行的时候,name属性要么是从实例中获取的,要么是来源于原型,所以使用in 来访问 name属性始终返回true;而hasOwnProperty()只在属性存在与对象实例中时才返回true,当删除了实例中的name属性后,就恢复了原型中name属性的连接,所以返回allen。

从 DOM 树中删除的节点,因为不在 DOM 树中,所以不能接收到来自浏览器的事件,除非你把这些对象本来保存在某个数组中在删除之后还跑来遍历它们。只要它们不再收到任何通知,那它们有没有 onclick 都是没有任何影响的。