关于attribute和property
英文渣尝试翻译Javascript.info,首篇选择了自认为难度不大的浏览器事件,然后我就遇到了下面这句话:
Please, note the two details:
- It is a property, not an attribute. The name of the property is
onevent, case-sensitive and must belowercased.onClickwon’t work.- The handler must be a function, not a string.
原文:http://javascript.info/tutorial/introduction-browser-events
之前一直没注意过property和attribute的区别,傻傻的把它们统一归为中文“属性”。回想起《Javascript高级程序设计》中有一个曾让我莫名其妙的“特性”(见书P348)。查了一些相关资料,感觉大概整明白了一点。
网上有很多娓娓道来剖析原理的解释,个人提炼了一下,关于attribute和property的区别大概主要这么几点:
html attribute由 html 定义,dom property 由 DOM 定义;
1. 许多 attribute 有与之对应的 property
2. 一些 attribute 没有对应的 property
3. 一些 property 也没有对应的 attribute
1. 许多 attribute 有与之对应的 property
2. 一些 attribute 没有对应的 property
3. 一些 property 也没有对应的 attribute
4. attribute在HTML里,大小写一般没有具体要求
5. property在JS里,一般为强制小写。
较为常见的是,html attribute 用于初始化 dom property 的值,之后除非脚本变更,一般不会改变。而 dom property则随着用户的交互行为而随之改变,但所对应的attribute却不会发生相应变化。input 的 value就是绝佳的示例,代码如下:
较为常见的是,html attribute 用于初始化 dom property 的值,之后除非脚本变更,一般不会改变。而 dom property则随着用户的交互行为而随之改变,但所对应的attribute却不会发生相应变化。input 的 value就是绝佳的示例,代码如下:

最后,个人选择不予翻译。。。
(《JS高程》的中文译者为以示区分,选择把attribute翻译成特性,把property翻译成属性)
浙公网安备 33010602011771号