Подтвердить что ты не робот

Где документируются конструкторы, такие как "new Image()" и "new Option()"?

Не в Mozilla, но:

Учитывая эти ссылки, вопрос о том, будет ли mozilla.org, как указано ниже, документом одинаковым.


В частности, где at mozilla.org являются конструкторами типа new Image() и new Option(), задокументированными в современном контексте?

Archaic документация,

описывает существование этих конструкторов, подразумевающих их как внутренние компоненты языка JavaScript, что неверно.

javascript: alert([new Image(), '\n\n', new  Option()])

ясно указывает их очевидное существование, отображая

[объект HTMLImageElement],

[объект HTMLOptionElement]

Риторически, как насчет:

javascript:alert([new Anchor(), new Preserve(), new Form(),,, ])

Какие еще примитивные элементарные конструкторы DOM существуют? Или, больше нет?

Является ли это анафемой и несовместимой с парадигмой DOM, используемой Mozilla, для включения определений программирования new Image() и new Option() и т.д., объясняя их отсутствие? Тем не менее, эти конструкторы явно не являются неотъемлемой частью спецификации языка JavaScript и, конечно, не HTML. Итак, где именно существует правильная текущая парадигма (исходящая из mozilla.org), которая описывает их полностью, включая типы и порядки аргументов?

ссылки:


В стороне: (пожалуйста, не отвлекайтесь на это - поиск соответствующих документов, указанных в заголовке статьи, является единственным соображением)

Этот ответ вызвал следующий экзамен. Это только наблюдение.

javascript:
    alert([  Option, Image,
               JSON, Math, Error, 
                 Array, Boolean, Date, Function,
                   Number, Object, RegExp, String  ].join("\n\n"));
    alert( Image.toSource() );

производит в FireFox:

[объект Option]

[изображение объекта]

[объект JSON]

[объект Math]

Функция Error() {     [собственный код]}

Функция Array() {     [собственный код]}

function Boolean() {     [собственный код]}

function Date() {     [собственный код]}

Функция

Функция() {     [собственный код]}

function Number() {     [собственный код]}

function Object() {     [собственный код]}

функция RegExp() {     [собственный код]}

Функция String() {     [собственный код]}

и

({})

но

Error: ({}) is not a constructor
Source File: javascript:alert(new ({}));
Line: 1

Является ли конструктором изображение или нет? Ответ на этот вопрос (предположительно) можно найти в документах, которые отвечают на вопрос, заданный в этом заголовке. Это должно подчеркивать несоответствия, аномалии и неравномерности каталогизации image и option и т.д. В соответствующем документе.

4b9b3361

Ответ 1

Существует различие между JavaScript ™ (реализация ECMAScript для DOM-манипуляций Mozilla, aka Gecko) и общий термин "javascript", который используется для описания подобных сценариев в других браузерах (например, JScript в IE).

Архаическая документация, [...] описывает существование этих конструкторов, подразумевающих их как встроенные компоненты языка JavaScript, что неверно.

Как вы пришли к такому выводу? JavaScript ™ принадлежит Mozilla, поэтому они могут указать, что он содержит все, что им нужно. JavaScript ™ имеет конструктор Image и Option с самого начала, другие реализации скопировали их, чтобы каждый браузер имел их. Такие функции существовали до создания интерфейсов DOM W3C и, где повсеместно, помечены как "DOM 0", что на самом деле означает поддержку Netscape Navigator и Internet Explorer во время DOM 1.

DOM 0 официально не документируется нигде. HTML5 - попытка написать спецификацию для HTML и javascript, как это реализовано в браузерах, поэтому она включает в себя как конструкторы Image и Option, так и функции DOM 0, но они не помечены или не классифицируются как таковые.

[...]

Однако эти конструкторы явно не являются неотъемлемой частью языка спецификация JavaScript

Нет опубликованной спецификации JavaScript ™, есть только документация по JavaScript в Mozilla Developer Network (MDN). Также обратите внимание, что документация в MDN является общедоступной вики, которую любой может создавать и редактировать, включая вас.: -)

Вы ошибаетесь, полагая, что документация в Mozilla - это какая-то полная спецификация для JavaScript ™ - это не так. Не так долго. Это действительно просто документация, которая была добавлена ​​заинтересованными лицами, в основном, вырываясь вокруг браузера и видя, что она делает. Существует также Справочник JavaScript, но вы также можете обнаружить, что этого не хватает.

[...]

Документация HTMLImageElement Mozilla

Эта ссылка на справочную документацию Gecko DOM описывает реализацию JavaScript W3C HTMLImageElementInterface, у которой нет конструктора Image.

Современный прецедент использования конструктора Image() в Mozilla

Это означает, что он существует, но нет удобного места для его документирования. Это может быть лучше всего описано в Справочник JavaScript. Если вы хотите добавить его, получите учетную запись MDN (бесплатно, очень просто) и добавьте ее.

Изменить

В MDN есть статья Image, которая ссылается на соответствующие стандарты.

Редактировать 25 мая 2015 г.

Конструктор Option задокументирован в HTML5.

Ответ 2

FWIW У Microsoft есть документация для обоих этих конструкторов в MSDN:

Ответ 3

HTML 5

Класс DOM Option

http://dev.w3.org/html5/spec-preview/the-option-element.html

Предусмотрено несколько конструкторов для создания объектов HTMLOptionElement (помимо методов factory из DOM Core, таких как createElement()): Option(), Option (текст), Option (текст, значение), Option (текст, значение, defaultSelected) и Option (текст, значение, выбранное по умолчанию, выбрано).

Ответ 4

На самом деле мне никогда не приходилось использовать аргументы конструктора. Я просто создаю объект и потом заполняю его.

var img=new Image();
img.src="path/to/image.jpg";

Когда я "встречаю" новый класс в Javascript, я исследую его с помощью JSON.stringify и используя кусок кода, подобный этому:

var obj_to_explore=new Image();
var dbg=[]
for(var i in obj_to_explore){
    dbg.push(i+": "+obj_to_explore[i]);
}
//alert("explored object: " + dbg.join(", "))
console.log("explored object: " + dbg.join(", "));

Потому что гораздо проще найти (в google) информацию о конкретных именах участников, чем о описании функции.