张店做网站,免费设计logo效果图,建设行业网站,在合肥哪里学网站建设javascript有两个很相近的东西#xff0c;property与attribute#xff0c;懒一点的人都翻译成“属性”。 如果专业点#xff0c;则区别为“属性”与“特性”。我认为叫做固有属性与自定义属性比较好一点。 property是来自于原型链#xff0c;所有HTML元素#xff0c;都是H…javascript有两个很相近的东西property与attribute懒一点的人都翻译成“属性”。 如果专业点则区别为“属性”与“特性”。我认为叫做固有属性与自定义属性比较好一点。 property是来自于原型链所有HTML元素都是HTMLElemenet的实例HTMLElement再往上走就是 Element再往上走就是Node每一级原型都有属性。就算你没有在标签内显式定义这些属性它们都存在。 比如title, id, class, lang, dir等等你没有定义它们它们就默认是一个空字符串。不同的标签都有自己独特 的固有属性比如A标签的href表单元素的tabindex标签。 attributes是通过setAttribute设置或者你div aaabbb/div这样添加的非固有属性外的属性它们没有显式定义是为undefined, 显式定义了它的值肯定是一个字符串固有属性没有这限制比如tabindex的值为数字option的selected为布尔 form的elements为一个类数组五花八门的 property在标签中是存在映射比如class它会转换为className, for转换为forHtml, tab index转换为tabIndex bgcolor转换bgColor.... 而attribute则不存在映射但只要你定义在的开标签内它们就会全部小写化, 并将同名的属性进行合并只留下第一个。
!doctype hmtl
htmlheadmeta http-equivContent-Type contenttext/html;charsetUTF-8titleattribute/title/headbodydivdiv aaa1 aAa2 aaA311/div/div/body
/html最后浏览器会解析成这样
!doctype hmtl
htmlheadmeta http-equivContent-Type contenttext/html;charsetUTF-8titleattribute/title/headbodydivdiv aaa1 11/div/div/body
/html细节处见功力只要你能区别开property与attribute你就能窥探到DOM世界的庞然大厦。一个标签不是你想象中的那么简单一个DIV标签是有七层原型链 HTMLDivElement , HTMLElement, Element, Node, EventTarget, Function, Object每个浏览器在设计这些时事先也没有打交道于是一大堆兼容性问题在里面。IE在向W3C靠拢过程中其属性系统发生了三次重大的转变。这些故事可以从我的书《javascript框架设计》(这里有源码)看到或是以后有空我向大家披露一下 posted on 2015-09-01 22:16 司徒正美 阅读(...) 评论(...) 编辑 收藏