DOM 元素中的 attribute 与 property 并不相同。attribute 通常翻译为“特性”,property 通常翻译为“属性”。其实它们是近义词,并不能根据特性、属性这两个词汇来区分 attribute 与 property。
- 特性:某事物所特有的性质;特殊的品性、品质。
- 属性:事物所具有的不可缺少的性质。
所以,attribute 与 property 都可以叫“特性”,也都可以叫“属性”。
区别
从 HTML 到 DOM 元素,一种是声明式的语言,一种是命令式语言。attribute 是直接收集 HTML 中的属性转为 js 对象,对象的 value 最接近原生态,也就是 HTML 标记里面的样子;property 也是转为 js 对象,但是转化的过程中会对 value 做一些处理,将 value 转为对 js 来说更有意义的值。
比如:
1 | <input type="checkbox" checked="checked" /> |
1 | elem.getAttribute("checked”) // “checked”,原生态的值 |