Здравствуйте, помогите разобраться со следующим:
На MDN указано,что атрибуты writable
, enumerable
, configurable
по умолчанию false
;
Но почему тогда:
var person = {name};
console.log(Object.getOwnPropertyDescriptor(person,'name'));
19:20:38.695 VM130:2 {value: "", writable: true, enumerable: true, configurable: true}
Если создавать свойство через defineProperty
, оно получит именно те атрибуты, которые указаны по умолчанию:
var person = {};
Object.defineProperty(person, 'name', {});
console.log(Object.getOwnPropertyDescriptor(person,'name'));
> {value: undefined, writable: false, enumerable: false, configurable: false}
В стандарте ECMA 262 пункт 11.1.5 есть описание, когда в каких случаях какие атрибуты ставятся; в частности:
The production PropertyAssignment : PropertyName : AssignmentExpression is evaluated as follows:
Let propName be the result of evaluating PropertyName.
Let exprValue be the result of evaluating AssignmentExpression.
Let propValue be GetValue(exprValue).
Let desc be the Property Descriptor{
[[Value]]: propValue,
[[Writable]]: true,
[[Enumerable]]: true,
[[Configurable]]: true
}
Return Property Identifier (propName, desc).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пишу приложение на Nodejs, использую гугл переводчик для перевода отдельных словСкажите пожалуйста, можно ли в Google translate API получить разные варианты...
Гугл советует использовать requestAnimationFrame() для внесения визуальных измененийДопустим, у меня есть следующий код: