最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue defineProperty使用教程

 更新時(shí)間:2023年01月09日 08:33:48   作者:執(zhí)迷原理  
Vue通過(guò)Object.defineProperty來(lái)實(shí)現(xiàn)監(jiān)聽(tīng)數(shù)據(jù)的改變和讀?。▽傩灾械膅etter和setter方法) 實(shí)現(xiàn)數(shù)據(jù)劫持。下面簡(jiǎn)單記錄一下,vue監(jiān)聽(tīng)數(shù)據(jù)變化的原理

1.認(rèn)識(shí)defineProperty

它是Object對(duì)象上的一個(gè)靜態(tài)實(shí)例方法,該方法作用為允許精確地添加或修改對(duì)象的屬性。

2.defineProperty

2.1使用defineProperty

該方法是Object對(duì)象上的一個(gè)靜態(tài)方法,該方法具有三個(gè)參數(shù),第一個(gè)參數(shù)為,我們要操作的一個(gè)對(duì)象,第二個(gè)參數(shù)為想要添加或修改的屬性名稱,第三個(gè)參數(shù)為一些相關(guān)配置。此方法允許更改這些額外詳細(xì)信息的默認(rèn)值。默認(rèn)情況下,使用添加的屬性O(shè)bject.defineProperty()不可寫、不可枚舉且不可刪除或者別的配置。

let obj = {
  name : 'hzh',
  sex : '男',
}
Object.defineProperty(obj,'age',{ // 第三個(gè)參數(shù)為相關(guān)配置,相當(dāng)于我們給了age屬性一個(gè)值為18
  value : 18
})
console.log(obj); // {name: 'hzh', sex: '男', age: 18}
let newobj = Object.keys(obj) 
console.log(newobj);// ['name', 'sex'] 說(shuō)明不能被枚舉
obj.age = 20;
console.log(obj); // 還是{name: 'hzh', sex: '男', age: 18},說(shuō)明age屬性不可寫、不可配置 

2.2為defineProperty定義的屬性添加額外配置

可以被修改,向配置選項(xiàng)添加writable值為true,默認(rèn)為false

obj.age = 20;
Object.defineProperty(obj,'age',{ // 第三個(gè)參數(shù)為相關(guān)配置,相當(dāng)于我們給了age屬性一個(gè)值為18
  value : 18,
  writable : true
})
console.log(obj); // {name: 'hzh', sex: '男', age: 20} 修改完成

可以被枚舉,向配置選項(xiàng)添加enumerable值為true,默認(rèn)為false

let newobj = Object.keys(obj) 
Object.defineProperty(obj,'age',{ // 第三個(gè)參數(shù)為相關(guān)配置,相當(dāng)于我們給了age屬性一個(gè)值為18
  value : 18,
  writable : true,
  enumerable : true
})
console.log(newobj);// ['name', 'sex', 'age'] 說(shuō)明可以被枚舉了

可以被刪除,向配置選項(xiàng)添加configurable值為true,默認(rèn)為false

let newobj = Object.keys(obj) 
Object.defineProperty(obj,'age',{ // 第三個(gè)參數(shù)為相關(guān)配置,相當(dāng)于我們給了age屬性一個(gè)值為18
  value : 18,
  writable : true,
  enumerable : true,
  configurable : true
})
delete obj.age // 如果沒(méi)有配置項(xiàng)configurable為true,那么這里應(yīng)該是false,也就意味著不能被刪除
console.log(obj); // {name : 'hzh',sex : '男'} 說(shuō)明可以被刪除了

2.3defineProperty的getter

業(yè)務(wù):當(dāng)有人讀取defineProperty定義的對(duì)象的屬性時(shí),那么getter(get函數(shù))就會(huì)被調(diào)用,且返回值就是我們利用defineProperty定義的對(duì)象的屬性值(所以不允許配置項(xiàng)里面有了getter以后還有value,不然會(huì)報(bào)錯(cuò))

<code class="language-plaintext hljs">let number = 18; 
let obj = {
  name :'hzh',
  sex :'男'
}
Object.defineProperty(obj,'age',{
  get(){
    console.log(`有人讀取了age屬性,值為${number}`)
    return number // 返回的就是 age 屬性的值
  }
})
console.log(obj);</code>

2.4defineProperty的setter

業(yè)務(wù):當(dāng)有人修改defineProperty定義的對(duì)象的屬性時(shí),那么setter(set函數(shù))就會(huì)被調(diào)用,且會(huì)收到修改的具體值

let number = 18;
let obj = {
  name :'hzh',
  sex :'男'
}
Object.defineProperty(obj,'age',{
  get(){
    console.log(`有人讀取了age屬性,值為${number}`)
    return number
  },
  set(value){
    console.log(`有人正在修改age值,值為${value}`)
    number = value
  }
})
console.log(obj);

到此這篇關(guān)于Vue defineProperty使用教程的文章就介紹到這了,更多相關(guān)Vue defineProperty內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+element-ui JYAdmin后臺(tái)管理系統(tǒng)模板解析

    vue+element-ui JYAdmin后臺(tái)管理系統(tǒng)模板解析

    這篇文章主要介紹了vue+element-ui JYAdmin后臺(tái)管理系統(tǒng)模板解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue3關(guān)鍵字高亮指令的實(shí)現(xiàn)詳解

    vue3關(guān)鍵字高亮指令的實(shí)現(xiàn)詳解

    這篇文章主要為大家詳細(xì)介紹了vue3實(shí)現(xiàn)關(guān)鍵字高亮指令的相關(guān)資料,w文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2023-11-11
  • Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程

    Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程

    pinia是一個(gè)輕量級(jí)的狀態(tài)管理庫(kù),屬于 vue3 生態(tài)圈新的成員之一,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程,需要的朋友可以參考下
    2022-11-11
  • 對(duì)VUE中的對(duì)象添加屬性

    對(duì)VUE中的對(duì)象添加屬性

    今天小編就為大家分享一篇對(duì)VUE中的對(duì)象添加屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vuex實(shí)現(xiàn)像調(diào)用模板方法一樣調(diào)用Mutations方法

    vuex實(shí)現(xiàn)像調(diào)用模板方法一樣調(diào)用Mutations方法

    今天小編就為大家分享一篇vuex實(shí)現(xiàn)像調(diào)用模板方法一樣調(diào)用Mutations方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Vue路由應(yīng)用詳細(xì)講解

    Vue路由應(yīng)用詳細(xì)講解

    路由的本質(zhì)就是一種對(duì)應(yīng)關(guān)系,根據(jù)不同的URL請(qǐng)求,返回對(duì)應(yīng)不同的資源。那么url地址和真實(shí)的資源之間就有一種對(duì)應(yīng)的關(guān)系,就是路由
    2022-11-11
  • Vue零基礎(chǔ)入門之模板語(yǔ)法與數(shù)據(jù)綁定及Object.defineProperty方法詳解

    Vue零基礎(chǔ)入門之模板語(yǔ)法與數(shù)據(jù)綁定及Object.defineProperty方法詳解

    這篇文章主要介紹了Vue初學(xué)基礎(chǔ)中的模板語(yǔ)法、數(shù)據(jù)綁定、Object.defineProperty方法等基礎(chǔ),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • vue驗(yàn)證碼(identify)插件使用方法詳解

    vue驗(yàn)證碼(identify)插件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue驗(yàn)證碼插件使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue混入mixin使用特點(diǎn)

    vue混入mixin使用特點(diǎn)

    混入(mixin)提供了一種非常靈活的方式,來(lái)分發(fā)vue組件中的可復(fù)用功能。一個(gè)混入對(duì)象可以包含任意組件選項(xiàng)。當(dāng)組件使用混入對(duì)象時(shí),所有混入對(duì)象的選項(xiàng)將被“混合”進(jìn)入該組件本身的選項(xiàng)
    2022-12-12
  • vue使用element-plus依賴實(shí)現(xiàn)表格增加的示例代碼

    vue使用element-plus依賴實(shí)現(xiàn)表格增加的示例代碼

    這篇文章主要為大家詳細(xì)介紹了vue使用element-plus依賴實(shí)現(xiàn)表格增加,文中示例代碼講解的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-12-12

最新評(píng)論

临夏市| 桓台县| 全椒县| 乐至县| 博客| 竹山县| 泾阳县| 延津县| 丹寨县| 扶风县| 恭城| 双桥区| 巴林右旗| 包头市| 桦甸市| 平昌县| 民丰县| 雷山县| 肥西县| 莒南县| 南部县| 收藏| 建始县| 松原市| 女性| 盖州市| 什邡市| 湛江市| 华阴市| 浦江县| 阳泉市| 思茅市| 定襄县| 临汾市| 红桥区| 辽阳县| 正蓝旗| 安义县| 聂荣县| 神农架林区| 凤凰县|