一篇文章彻底理解property 和 attribute

js 世界中有两个非常重要的术语,开发和学习过程中会非常密集的接触到,他们是 attribute 和 property。本文解释这两个基础概念,理解他们之后,在看文章、api 文档的时候就会思路清晰,不迷糊了。

Atrribute和Property的概念或定义

html文档渲染时会被浏览器解析为一个dom树,树上每个节的点为一个dom对象(dom object)。

  1. property是dom对象的概念,含义为dom对象属性。
  2. attribute是html元素的概念,含义为元素的特性。
  3. attribute翻译为特性,property翻译为属性。

从不同的角度理解Attribute 和 Property

  1. 在多数面向对象的开发平台中(比如 java、c#等)property的含义都是对象的属性,这一点和js中的property概念是统一的。
  2. attribute的值只能是字符串,property的值可以是任意js类型的数据。
  3. 在js 中比如 let a = {name:"tom"},这里 name 就是对象 a 的property(当然他可以是任意类型的值)。

从实例理解Attribute 和 Property

在vue中,attribute和property的使用当然遵循上面的定义,而且凸显的更加明显。看下面的代码:

<div age="12" v-bind:age1="age1">
  1. age 是一个 html 元素(这里是一个div )的 attribute,他的值只能是字符串。
  2. v-bind指令给此div元素对应的dom对象指定了一个名为age1的属性,其值为组件中名为age1的变量的值,它可以是任意js类型的数据。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注