一、官網概念
.prop - 強制綁定為 DOM property
原本自定義屬性默認會綁定在DOM的attributes上,加上prop之后會綁定在property,attributes上就不存在咯
在頁面上的一個明顯區別就是:不加prop時,DOM渲染后自定義屬性和值都是暴露在節點上,而加上之后是隱藏了。這應該也是最主要的一個功能,避免數據暴露!
二、什么是property?什么是attributes?
property:DOM元素的屬性(property)值 ,是DOM對象原生實現的,例如.obj.id obj.class 這樣直接獲取目標對象的值
attributes:是HTML中的特性(attribute),而這些特性有的未必會被內置為的DOM元素的屬性。比如自定義的特性, 可以使用obj.getAttribute(‘id’),的方法來獲取目標對象的屬性值。
三、寫一寫以下代碼去理解!!!
代碼示例
<template><div><h1>修飾符prop</h1><inputid="input"type="foo":myData.prop="888":myData2="666"/></div>
</template>
<script>
export default {mounted: function () {const input = document.getElementById("input");/**myData用了prop修飾符 myData2未使用根據上面的概念 property是可以拿到myData的值,但是拿不到myData2**///獲取DOM上propery的值 console.log(input.myData, input.myData2); //888 undefined//獲取DOM上attributes上的值(第一種方法)console.log(input.attributes.myData,input.attributes.myData2.value); //undefined 666//獲取DOM上attributes上的值(第二種方法)console.log(input.getAttribute('myData'), input.getAttribute('myData2')); //null 666},
};
</script>