Разница между этим дескриптором свойства и назначением свойства в ECMAScript 5? - PullRequest
4 голосов
/ 22 января 2012

Я читаю немного больше о ECMAScript 5 (в браузере используется ES5-shim , который, я знаю, не поддерживает все).И просто чтобы устранить путаницу, учитывая, что у меня есть этот объект (украденный из этого поста ):

var Person = {
    firstName: null, // the person’s first name
    lastName: null // the person’s last name
};

Есть ли разница между этим:

var Employee = Object.create(Person, {
    id: {
        value: null,
        enumerable: true,
        configurable: true,
        writable: true
    }
});

И это:

var Employee = Object.create(Person);
Employee.id = null;

// Or using jQuery.extend
$.extend(Employee, {
    id : null
});

Насколько я понял, перечислимые, настраиваемые и записываемые устанавливаются в true при определении свойства таким образом (что также было бы обратно совместимо с устаревшими механизмами JavaScript).Я что-то упускаю или могу просто опускать подробные дескрипторы свойств всякий раз, когда я хочу, чтобы это было желаемое поведение?

1 Ответ

4 голосов
/ 22 января 2012

Они одинаковы.

При создании новых свойств по присваиванию

obj.prop = val;

все три логических атрибута вновь созданного свойства устанавливаются на true.


Также обратите внимание, что при добавлении свойств через Object.defineProperty

Object.defineProperty( obj, 'prop', {
    value: val
});

логические атрибуты устанавливаются на false (по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...