超碰av在线|无码精品一区二区三区在线|伊人色色日韩一级片内射视频群批_欧美丰满少妇人妻HD高清在线_亚洲一区二区中文_亚洲无码动漫专区

屬性描述符與Proxy的區(qū)別&Vue3.0為何改用Proxy

2020-4-21    前端達(dá)人

屬性描述符

什么是屬性描述符?

屬性描述符就是一個(gè)屬性除了屬性名與屬性值之外的其他相關(guān)信息

通過(guò)Object.getOwnPropertyDescriptor(對(duì)象, 屬性名)可以得到一個(gè)對(duì)象的某個(gè)屬性的屬性描述符

let obj = {
    a: 1
}
console.log(Object.getOwnPropertyDescriptor(obj, 'a'));
// {
//     value: 1,
//     writable: true,
//     enumerable: true,
//     configurable: true
// }

通過(guò)Object.getOwnPropertyDescriptors(對(duì)象)可以得到某個(gè)對(duì)象的所有屬性描述符

let obj = {
    a: 1,
    b: 2
}
console.log(Object.getOwnPropertyDescriptors(obj));
// {
//     a: {
//         value: 1, 
//         writable: true,
//         enumerable: true,
//         configurable: true
//     }
//     b: {
//         value: 2, 
//         writable: true, 
//         enumerable: true, 
//         configurable: true
//     }
// }


接下來(lái),說(shuō)一說(shuō)每一個(gè)屬性描述符的作用

value-屬性值

不多逼逼

configurable-屬性描述符是否可被修改

當(dāng)我們?cè)O(shè)置configurable為false以后,再去修改屬性描述符的話,會(huì)報(bào)錯(cuò)


let obj = {
    a: 1,
    b: 2
}
Object.defineProperty(obj, 'a', {
    value: 'a',
    configurable: false
})
Object.defineProperty(obj, 'a', {
    value: 'a',
    configurable: true
})
// Uncaught TypeError: Cannot redefine property: a
//    at Function.defineProperty (<anonymous>)



enumerable-該屬性是否可被枚舉

當(dāng)設(shè)置一個(gè)屬性的enumerable為false時(shí),該屬性不可被forin循環(huán)
但是不影響forof循環(huán),因?yàn)閒orof循環(huán)看有沒(méi)有Symbol(Symbol.iterator)
forin循環(huán)的是屬性名,forof循環(huán)的是屬性值


分享本文至:

日歷

鏈接

個(gè)人資料

存檔