关于attribute和property

英文渣尝试翻译Javascript.info,首篇选择了自认为难度不大的浏览器事件,然后我就遇到了下面这句话:

 

Please, note the two details:

  1. It is a property, not an attribute. The name of the property is onevent, case-sensitive and must belowercasedonClick won’t work.
  2. 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
4. attribute在HTML里,大小写一般没有具体要求
5. property在JS里,一般为强制小写。

较为常见的是,html attribute 用于初始化 dom property 的值,之后除非脚本变更,一般不会改变。而 dom property则随着用户的交互行为而随之改变,但所对应的attribute却不会发生相应变化。input 的 value就是绝佳的示例,代码如下:
 
 
最后,个人选择不予翻译。。。
(《JS高程》的中文译者为以示区分,选择把attribute翻译成特性,把property翻译成属性)

posted on 2016-02-11 13:35  ButcherV  阅读(306)  评论(0)    收藏  举报

导航