Атрибуты объекта Javascript? - PullRequest
0 голосов
/ 21 мая 2018

Я знаю, что все свойства объекта имеют имя и такие атрибуты, как value, configurable, enumerable и writable.Но в этой записи я прочитал, что объекты тоже имеют атрибуты, такие как prototype, class и extensible.

Я понимаю, что атрибут prototype предназначен для указания на родительский объект,Но что я не понимаю, так это атрибут class?Есть ли такой атрибут?И разве extensible не является методом объекта как isExtensible()?

1 Ответ

0 голосов
/ 21 мая 2018

В этом посте я читал, что у объектов тоже есть атрибуты, такие как prototype, class и extensible.

Они обычно не называются "атрибутами", но внутренние слоты .Обычно они обозначаются двойными скобками, чтобы отличать их от обычных свойств, то есть [[prototype]], [[class]] и [[extensible]].

Что такое [[class]]атрибут?Есть ли такой атрибут?

Больше не в ES6.Внутренний слот [[class]] содержал информацию о типе встроенного типа (например, Array, RegExp, встроенная обертка) объекта.Это было показано, когда вы использовали метод Object.prototype.toString на объекте.(Посмотрите на Почему Object.prototype.toString.call (foo) может определять тип foo? или Почему `Object.prototype.toString` всегда возвращает` [object *] `? для более подробной информации - это был также лучший способ определить, является ли объект массивом до того, как Array.isArray был доступен).

Начиная с ES6, такого внутреннего слота больше нет, и Object.prototype.toString полагаетсяна механизме Symbol.toStringTag.

И не является ли расширяемый метод объекта как isExtensible ()?

Нет, [[растяжимый]] внутренний слот - это то, к чему isExtensible() обращается, и что Object.preventExtensions() может установить.

...