2016-02-29 2 views
2

В чем разница между этими двумя?Почему существует HTMLAudioElement и отдельный класс аудио?

Согласно mdn создать новый HTMLAudioElement, выполнив:

var audio = new Audio(); 

Как это отличается от объекта, я получаю от вызова document.createElement('audio')?

Является ли это одним из следующих доказательств будущего, чем другое? В каких случаях я должен выбирать один за другим?

+0

Какой браузер вы используете? Я получаю все стандартные методы DOM в Chrome. – Harangue

+0

Хмм, вы правы, методы DOM есть ... редактирование моего вопроса ... – uglymunky

+2

они должны быть одинаковыми. несколько тегов имеют специальные конструкторы выше и выше 'HTMLSomethingElement' и' document.createElement'. в частности 'Image',' Audio' и 'Option', возможно, больше. – dandavis

ответ

3

According to the spec (и связанная с MDN статья) конструктор new Audio() просто создает HTMLAudioElement. Document.createElement создает HTMLxElement, поэтому они эквивалентны. Браузеры реализуют полную спецификацию так they aren't concerned.

new Audio() имеет то преимущество, что он может быть более декларативным (вы не обязательно связаны с его связями с DOM). С другой стороны, нет new Video(), поэтому для согласованности вы можете счесть полезным использовать createElement.

+0

действительно выглядит так: 'Object.getPrototypeOf (новый аудио)' и 'Object.getPrototypeOf (document.createElement ('audio'))' оба возвращают 'HTMLAudioElement' в Chrome – uglymunky