@@ -43,8 +43,6 @@ Object.defineProperty(obj, prop, descriptor)
4343
4444## Обычное свойство
4545
46- Обычное свойство добавить очень просто.
47-
4846Два таких вызова работают одинаково:
4947
5048``` js
@@ -55,12 +53,14 @@ var user = {};
5553user .name = " Вася" ;
5654
5755// 2. указание значения через дескриптор
58- Object .defineProperty (user, " name" , { value: " Вася" });
56+ Object .defineProperty (user, " name" , { value: " Вася" , configurable : true , writable : true , enumerable : true });
5957```
6058
59+ Оба вызова выше добавляют в объект ` user ` обычное (удаляемое, изменяемое, перечисляемое) свойство.
60+
6161## Свойство-константа
6262
63- Для того, чтобы сделать свойство неизменяемым, добавим ему флаги ` writable ` и ` configurable ` :
63+ Для того, чтобы сделать свойство неизменяемым, изменим его флаги ` writable ` и ` configurable ` :
6464
6565``` js
6666// + run
@@ -72,8 +72,10 @@ var user = {};
7272
7373Object .defineProperty (user, " name" , {
7474 value: " Вася" ,
75+ * ! *
7576 writable: false , // запретить присвоение "user.name="
7677 configurable: false // запретить удаление "delete user.name"
78+ */ ! *
7779});
7880
7981// Теперь попытаемся изменить это свойство.
@@ -84,7 +86,7 @@ user.name = "Петя";
8486*/ ! *
8587```
8688
87- Заметим, что без ` use strict ` операция записи "молча" не сработает, а при ` use strict ` дополнительно генерируется ошибка.
89+ Заметим, что без ` use strict ` операция записи "молча" не сработает. Лишь если установлен режим ` use strict ` , то дополнительно сгенерируется ошибка.
8890
8991## Свойство, скрытое для for..in
9092
0 commit comments