Attribute和Property的区别
2017-10-12 23:13
295 查看
出处:https://www.web-tinker.com/article/20115.html
Attribute和Property都被翻译成“属性”,但是它们的本质不同。下面我们就从一些例子中来说说它们的区别吧!
“桌子上有个苹果”。Attribute仅仅是描述了这个“有苹果”的事实,而Property则是直指那个桌子上的苹果。这里的苹果是一个实体,用Attribute来描述只能说明这个事件的事实。它无法准确的描述出具体是哪个苹果在桌子上。再举个例子“我爸是李刚”。Attribute仅仅是描述了“李刚”这个名字,而Property则是直接代表“李刚”这个人(实体)。叫“李刚”这个名字的人很多,所以Attribute无法确切表示。而Property则是直指实体的,可以准确描述事物。但也不是说Attribute就绝对无法准确表示事物,只是Attribute只能用文字描述,所以它要精确描述一个东西的代价是比Property高了许多。比如描述“李刚”可以用他的身份证号码之类的,可是说不定人家的身份证还是伪造的,所以还需要更多的文字描述才能准确的说明一个东西。
那么既然Property比Attribute好,为什么还需要Attribute呢?就说李刚事件,过了这么多年了也许很多人都忘了。Property是保存在记忆(memory)中的,虽然一开始很准确,但是无法长期保存。我们经常会把需要长期保存的东西用文字描述下来,这时候就需要用到Attribute。而且Attribute和Property并不冲突,我们经常会翻阅一些旧资料来补充我们渐淡的记忆。
这些就是它们本质上的区别,在程序中我们可以用另外的方式说明它。Attribute是标记语言的概念,标记语言本身是一种文本,所以Attribute这种文本方式描述的性质在标记语言中很容易使用。而Property则是保存在内存(memory)中,而内存会随着程序运行结束被释放,因此变得无法长期储存。在JavaScript中,DOM对象通常都是多重继承的。同时继承了HTML和JavaScript的Object。Object是完完全全的内存对象,所以使用的是Property,而HTML本身是标记语言所以使用的是Attribute。当这两个东西被继承到同一个对象上的时候经常会让人混淆起来。由于一些Attribute是很常用的,比如id、class等,所以DOM把它们映射到了Property上以方便使用。这样我们就会遇到一个对象同时具有id这个Attribute和Property(由于class是保留字,所以它被映射到Property上时变成了className)。
虽然被DOM这样一搞就变得很乱,但是我们这样理解之后就很简单。只要是HTML标签上设置的属性就是Attribute,而直接在JavaScript中用点运算符操作的DOM对象属性就是Property。还有一些HTML自带的属性,它们同时是Attribute和Property。Attribute的数据类型永远都是字符串,而Property就可以非常丰富。
Attribute和Property都被翻译成“属性”,但是它们的本质不同。下面我们就从一些例子中来说说它们的区别吧!
“桌子上有个苹果”。Attribute仅仅是描述了这个“有苹果”的事实,而Property则是直指那个桌子上的苹果。这里的苹果是一个实体,用Attribute来描述只能说明这个事件的事实。它无法准确的描述出具体是哪个苹果在桌子上。再举个例子“我爸是李刚”。Attribute仅仅是描述了“李刚”这个名字,而Property则是直接代表“李刚”这个人(实体)。叫“李刚”这个名字的人很多,所以Attribute无法确切表示。而Property则是直指实体的,可以准确描述事物。但也不是说Attribute就绝对无法准确表示事物,只是Attribute只能用文字描述,所以它要精确描述一个东西的代价是比Property高了许多。比如描述“李刚”可以用他的身份证号码之类的,可是说不定人家的身份证还是伪造的,所以还需要更多的文字描述才能准确的说明一个东西。
那么既然Property比Attribute好,为什么还需要Attribute呢?就说李刚事件,过了这么多年了也许很多人都忘了。Property是保存在记忆(memory)中的,虽然一开始很准确,但是无法长期保存。我们经常会把需要长期保存的东西用文字描述下来,这时候就需要用到Attribute。而且Attribute和Property并不冲突,我们经常会翻阅一些旧资料来补充我们渐淡的记忆。
这些就是它们本质上的区别,在程序中我们可以用另外的方式说明它。Attribute是标记语言的概念,标记语言本身是一种文本,所以Attribute这种文本方式描述的性质在标记语言中很容易使用。而Property则是保存在内存(memory)中,而内存会随着程序运行结束被释放,因此变得无法长期储存。在JavaScript中,DOM对象通常都是多重继承的。同时继承了HTML和JavaScript的Object。Object是完完全全的内存对象,所以使用的是Property,而HTML本身是标记语言所以使用的是Attribute。当这两个东西被继承到同一个对象上的时候经常会让人混淆起来。由于一些Attribute是很常用的,比如id、class等,所以DOM把它们映射到了Property上以方便使用。这样我们就会遇到一个对象同时具有id这个Attribute和Property(由于class是保留字,所以它被映射到Property上时变成了className)。
虽然被DOM这样一搞就变得很乱,但是我们这样理解之后就很简单。只要是HTML标签上设置的属性就是Attribute,而直接在JavaScript中用点运算符操作的DOM对象属性就是Property。还有一些HTML自带的属性,它们同时是Attribute和Property。Attribute的数据类型永远都是字符串,而Property就可以非常丰富。
相关文章推荐
- 程序员眼中的UML(4)--类图释疑之一,Attribute和Property之区别(转载)
- property和attribute的区别
- C# Field,Property,Attribute的区别
- property 与 attribute 的区别?
- attribute和property的区别
- javascript中property与attribute的区别
- property 和 attribute 的区别?
- Property 和 Attribute 的区别
- C#中Property和Attribute的区别
- attribute和property的区别
- property和attribute的区别
- 爱创课堂每日一题七十七天- attribute和property的区别是什么?
- 理解特性attribute 和 属性property的区别 及相关DOM操作总结
- JavaScript中property和attribute的区别详细介绍
- Property和Attribute的区别
- C#中Property和Attribute的区别
- attribute与property区别总结
- Attribute和Property的区别
- 【待续】C#.Net 关键词清理 Fields Property Attribute Const三者之间的区别与联系
- checkbox的checked[property]和checked[attribute]区别