js 世界中有两个非常重要的术语,开发和学习过程中会非常密集的接触到,他们是 attribute 和 property。本文解释这两个基础概念,理解他们之后,在看文章、api 文档的时候就会思路清晰,不迷糊了。
Atrribute和Property的概念或定义
html文档渲染时会被浏览器解析为一个dom树,树上每个节的点为一个dom对象(dom object)。
- property是dom对象的概念,含义为dom对象属性。
- attribute是html元素的概念,含义为元素的特性。
- attribute翻译为特性,property翻译为属性。
从不同的角度理解Attribute 和 Property
- 在多数面向对象的开发平台中(比如 java、c#等)property的含义都是对象的属性,这一点和js中的property概念是统一的。
- attribute的值只能是字符串,property的值可以是任意js类型的数据。
- 在js 中比如 let a = {name:"tom"},这里 name 就是对象 a 的property(当然他可以是任意类型的值)。
从实例理解Attribute 和 Property
在vue中,attribute和property的使用当然遵循上面的定义,而且凸显的更加明显。看下面的代码:
<div age="12" v-bind:age1="age1">
- age 是一个 html 元素(这里是一个div )的 attribute,他的值只能是字符串。
- v-bind指令给此div元素对应的dom对象指定了一个名为age1的属性,其值为组件中名为age1的变量的值,它可以是任意js类型的数据。