Где документированы такие конструкторы, как `new Image ()` и `new Option ()`? - PullRequest
38 голосов
/ 04 августа 2011

Не в Mozilla, но:

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


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

Архаическая документация ,

описывает существование этих конструкторов, относящих их к внутренним компонентам языка 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:

[опция объекта]

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

[объектJSON]

[математика объекта]

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

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

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

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

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

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

function Object () {[native code]}

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

function String (){[native code]}

и

({})

, но

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

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

Ответы [ 4 ]

10 голосов
/ 04 августа 2011

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

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

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

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

[...]

Тем не менее, эти конструкторы явно не присущи языковой спецификации JavaScript

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

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

[...]

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

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

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

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

Редактировать

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

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

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

2 голосов
/ 31 октября 2011

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

1 голос
/ 23 июля 2013

HTML 5

DOM Опция класс

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

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

0 голосов
/ 04 августа 2011

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

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) информацию о конкретных именах участников, чем в описании функции.

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