Attribute和Property的区别
1. Attribute和Property的概念
- attribute : 特性,XML 元素中的概念,用于描述 XML 标签的附加信息,即: XML 标签的特性; 如:
<input type="text" value="初始值" />
中的type
、value
均是input元素的特性; - property : 属性,JavaScript 对象的概念,用于描述 JavaScript 对象的成员,即:JavaScript 对象的属性;如: JavaScript 对象
var person = {name:"郭斌勇",age:28}
中的name
、age
均是对象person
的属性;
2. attribute和property的关系
为了能够在 JavaScript 中操作 HTML 浏览器会为 HTML 中的元素创建相应的 Dom 对象,Dom 对象就是普通的 JavaScript 对象,它是 HTMLElement
类型的对象,所以 dom 对象的所有成员都称为 property (属性);
JavaScript 中的 HTMLElement
类型的对象有个 attributes
属性(property),它是 NamedNodeMap
类型的类数组对象 ,它里面保存的都是 HTML 中元素的 特性(attribute) 相对应的 JavaScript 对象;在 JavaScript 中,HTML 中元素的 attribute (特性) 用 Attr 类型的对象表示;
在 XML 中,元素的特性(attribute)值是没有类型之分的,所以,无论是数字、字符中、布尔值,在 XML 眼中,它们都是同一类东西; JavaScript 中的 Attr 类型把 HTML 中的元素的特性值都映射为字符串类型;为了更好地使用 Dom , 浏览器也在 Dom 对象中为标准的 HTML 元素的特性(attribute)添加了相应的属性 property ,如:dom 对象的 id
、type
、checked
、value
、defaultValue
等等;为了更好的使用,浏览器为这些属性的值也做了相应的处理,所以,这些属性(property)的值与 HTML 元素中相应的特性值并非完全一致;如:对于 Dom 对象,dom.checked
的值始终是布尔类型的,dom.value
的值始终是相应 input 元素的当前值,并非是 HTML 中 input 元素的 value 特性的值,dom.defaultValue
则是 HTML 中 input 元素的 value 特性的值;