Что такое ECMAScript «нативный объект»? - PullRequest
4 голосов
/ 08 ноября 2011

Согласно ECMA-262 нативный объект

в реализации ECMAScript, семантика которого полностью определяется этой спецификацией, а не средой хоста

Встроенный объект определяется как

объект, предоставленный реализацией ECMAScript, независимо от среды хоста, который присутствует в начале выполнения программы ECMAScript.

с примечанием

Стандартные встроенные объекты определены в данной спецификации, и реализация ECMAScript может указывать и определять другие . Каждый встроенный объект является собственным объектом.

Если собственный объект полностью определен спецификацией ECMA-262, а не хост-средой, и реализация ECMAScript может указывать иопределить новые встроенные объекты, как получается, что эти новые встроенные объекты могут быть собственными объектами, если они не полностью определены спецификацией ECMA-262?

Чего мне не хватает?

Ответы [ 3 ]

6 голосов
/ 08 ноября 2011

Они "родные", потому что поставляются с реализацией ECMAScript .Хост-среда обычно представляет собой приложение, состоящее из реализации ECMAScript и нескольких других интерфейсов, которые работают вместе.Например,

  • Веб-браузер - хост-среда, состоящая из реализации ECMAScript, интерфейса DOM, механизма рендеринга, пользовательского интерфейса и т. Д.
  • Windows ScriptХост - хост-среда, состоящая из реализации ECMAScript, VBScript и т. Д.
  • Node.js - хост-среда, состоящая из реализации ECMAScript (V8), HTTP-интерфейсов и т. Д.

«Встроенные» объекты необходимы для наследования от Object или Function, тогда как объекты хоста - объекты, предоставленные средой хоста, но не обязательно присутствует в начале выполнения - не обязательно, но может (и иногда может) делать.

Примеры собственных объектов, определенных в ECMA-262

  • Object(), Array(), Date()
  • Math, JSON, глобальный объект.

Примеры собственных встроенных объектов не определяется ECMA-262

Примеры хост-объектов

  • DOM-объектов, document и window
  • console
2 голосов
/ 08 ноября 2011

Семантика собственного объекта полностью определена в ECMA-262. Сам объект не может быть.

Итак, у нас есть три уровня объектов:

  1. Стандартные встроенные объекты : определены ECMA-262 и соответствуют семантике ECMA-262. Пример: Object.
  2. Другие встроенные объекты : не определены в ECMA-262, но следуют семантике ECMA-262. Пример: setTimeout.
  3. Хост-объекты : не следовать семантике ECMA-262; они могут иметь странное поведение любого рода и взаимодействовать со встроенными объектами EMCA-262 странными и неожиданными способами (например, лгать о различных внутренних свойствах). Пример: NodeList.
0 голосов
/ 08 ноября 2011

Определение native object - это относительный термин host object
Как и window.console объект - это хост-объект, который не был задокументирован Ecma262, чтобы сообщить браузеру, как его реализовать.
И Ecma262это просто проект, чтобы указать язык функции.Реализация ECMAScript на самом деле является бизнесом браузера.Это означает, что реализация соответствует спецификации на object type, мы можем сказать это built-in object, хотя они не работают точно так же.

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