JavaScript – 物件屬性的調整

針對物件的屬性調整。

Object.defineProperty(obj, prop, descriptor)

調整物件屬性的特徵。

obj: 要定義屬性的目標物件。

prop: 要定義或修改的屬性的名稱。

descriptor: 參數,有value、writable、configurable、enumerable。

value

修改屬性的值。

1
2
3
4
5
var list = {a: 1,b: 2,c: 3};

Object.defineProperty(list,'a', {value :5});

console.log(list); // {a: 5, b: 2, c: 3}

writable

屬性可否重新賦值。

1
2
3
4
5
6
7
8
var list = {a: 1,b: 2,c: 3};

list.a = 7 ;
console.log(list); // {a: 7, b: 2, c: 3,}

Object.defineProperty(list, 'a', {writable: false});
list.a = 5
console.log(list); // {a: 7, b: 2, c: 3,}

configurable

屬性可否刪除。

1
2
3
4
5
6
7
8
var list = {a: 1,b: 2,c: 3};

Object.defineProperty(list, 'a', {configurable: false});
delete list.a;
console.log(list); // {a: 1,b: 2,c: 3}

delete list.b;
console.log(list); // {a: 1,c: 3}

enumerable

屬性可否被列舉(遍歷顯示)。

1
2
3
4
5
6
7
8
9
10
11
var list = {a: 1,b: 2,c: 3};

for (key in list){
console.log(key); // a, b, c
}

Object.defineProperty(list, 'a', {enumerable: false});

for (key in list){
console.log(key); // b, c
}
作者

LeeU

發表於

2020-12-10

更新於

2024-04-04

許可協議