В чем разница между документом и документом в JavaScript?
2163 просмотра
2 ответа
В настоящее время я создаю API для JavaScript, преимущественно с использованием Visual Studio 2010 и JetBrains WebStorm (отлично, если вы ищете пуленепробиваемую JavaScript IDE).
Просматривая список intellisense в Visual Studio (пытаясь ознакомиться с API JavaScript), я заметил, что и то, Document
и другое document
существует.
- В чем разница между
Document
иdocument
? - Что является
document
экземпляром (если есть)? - Как использовать
Document
(так как это не функция, следовательно, не конструируемая)? - Самое главное, что вредного в "исправлении обезьян",
Document
чтобы сделать его конструктивным?
Логическое обоснование этих вопросов заключается в том, что я хочу создать некоторые объекты, которые вписываются в мой API (например Document
, HTMLElement
и т. Д.), Но поскольку они, похоже, уже существуют в некотором отношении, я не уверен, что мне следует перезаписывать их нативные реализация.
Ответы (2)
15 плюса
В чем разница между
Document
иdocument
?
document
(или window.document
) является ссылкой на документ, содержащийся в окне. ( спец )
Document
является интерфейсом DOM для документов, который предоставляется глобальному объекту. ( спец , спец )
Как использовать
Document
(так как это не функция, следовательно, не конструируемая)?
Это хост-объект, и ему не нужно следовать спецификации EcmaScript - но это не значит, что это не функция. Это может отличаться от браузера к браузеру также. Тем не менее, он не предназначен для вызова (если вы попробуете это, вы получите a NOT_SUPPORTED_ERR
), существуют другие методы для создания экземпляров / получения новых документов. То, что вы все еще можете использовать это для
> document instanceof Document
true
> Document.prototype
DocumentPrototype {
adoptNode: Function
constructor: Document
createAttribute: Function
…
querySelector: Function
querySelectorAll: Function
}
|- NodePrototype
|- Object
так что вы можете расширить его прототип и использовать эти методы для всех XMLDocuments
/ HTMLDocuments
в вашем приложении (но только если вы знаете, что не так с расширением DOM ).
Что наиболее важно, какой вред в "исправлении обезьян"
Document
делает его конструктивным?
Я не уверен, как ты это сделаешь. Перезапись может повредить каждый скрипт, который ожидает, что он будет работать, как указано выше (если вы не исправите prototype
свойство своей новой функции). И, возможно, в некоторых средах это Document
свойство window
недоступно для записи, так что вы можете навредить себе.
1 плюс
Document
Это определение прототипа дляdocument
объекта глобальной области видимости означает, чтоDocument
прототип 's является общим с его instance (document
). likeWindow
- это определение прототипа дляwindow
объекта.- Это
Document
родной объект-прототип, и вы не можете создавать его экземпляры, только один экземпляр создается, когда страница создается (опять же, как окно) точно так же, как один объект тона. - Я не думаю, что переопределение
Document
будет хорошей практикой.
Я предлагаю использовать пространство имен для вашего API и создать ваш Document, HTMLElement и т. Д. В вашем пространстве имен API, например:
var api = {
Document: { /* your implementation */ },
HTMLElement: { /* your implementation */ }
//...
};
var myDocument = new api.Document();
Более того, вы можете наследовать реальный Document
прототип и использовать его в своем собственном объекте следующим образом:
api.Document = function(){ /* your implementation */ }
api.Document.prototype = Document.prototype;
var myDocument = new api.Document();
Надеюсь, что это поможет, и я понял ваш вопрос ...
Автор: udidu Размещён: 28.05.2013 11:11Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- javascript Удаление элементов с помощью Array.map в JavaScript
- javascript Прокрутка переполненных DIV с помощью JavaScript
- javascript API Карт Google - проблемы с классом GLatLngBounds
- javascript Проверка десятичных чисел в JavaScript - IsNumeric ()
- dom Как программно установить значение элемента select box, используя JavaScript?
- dom Как определить, виден ли элемент DOM в текущем окне просмотра?
- dom Как проверить, скрыт ли элемент в jQuery?
- dom Синтаксический анализ XML - ElementTree против SAX и DOM
- dom Как изменить класс элемента с помощью JavaScript?
- dom Как получить доступ к элементу HTML без идентификатора?
- dom Как определить тип HTML-элемента в JavaScript?
- dom Как передать аргументы функции прослушивателя addEventListener?
- dom Динамическое изменение иконки сайта