2012-04-30 3 views
3

Я знаю, что в JavaScript, мы можем создать, instatnces объекта, как иСоздание экземпляров предопределенных объектов в Javascript

var ins = new myObject(); 

Я знаю, что окно, документ и т.д. предопределенные объекты в javascript..Can мы создаем новые экземпляры из этих объектов.? Для экс:
ли

var inss = new document(); 

возможно?

+1

Вы можете имитировать собственные функции-конструкторы для элементов DOM. Возьмите [jsdom] (https://github.com/tmpvar/jsdom "jsdom"), например. –

+0

thansk по ссылке –

+0

Я так не думаю. Попытка этого var inss = new document(); на консоли дать ошибку «TypeError: объект не является функцией» – Adil

ответ

2

Не путайте объектам с конструкторами (или классов в большинстве языков объектно-ориентированного программирования). В JavaScript можно создать объекты с помощью вызова функции конструкторы с помощью new оператора:

function MyObject() 
{ 
} 

var obj = new MyObject(); 

После этого вы можете получить доступ к конструктору данного объекта с помощью constructor свойства:

var ctor = obj.constructor; // (ctor === MyObject) will be true 

Теоретически, вы можете создавать новые объекты одного и того же типа, что и данный объект:

var obj1 = new MyObject(); 
var obj2 = new obj1.constructor(); 

в вашем случае, вы можете попробовать то же самое с «встроенной» объекта, но он, вероятно, не будет работать, так как механизм сценария может его запретить. Например, Chrome будет бросать TypeError: Illegal constructor при попытке создать новый документ с использованием new document.constructor(). Это связано с тем, что конструктор document, HTMLDocument, не предназначен для непосредственного использования.

1

Да и нет, в основном нет.

Вы можете создать новый объект window, используя window.open. Он также будет иметь новый объект document.

Вы можете создать новый DOM document через createDocument, хотя он не обязательно будет иметь все особые особенности предварительно сделанного. Вы также можете создать новый документ фрагмент через createDocumentFragment, что может быть очень удобно.

0

document не является конструктором, это построенный объект. То, что вы пытаетесь сделать, это сказать new new Object() или new {}.

Конструктор document является HTMLDocument, но вы не можете построить его таким образом, вы должны использовать document.implementation.createDocument()

1

Нет, вы не можете. Хотя большинство этих объектов-хозяев имеют конструкторы (например, HTMLDocument для document), они используются только для функций наследования (например, оператор instanceof), но не могут быть вызваны.

> document.constructor 
HTMLDocument 
> new HTMLDocument 
Unhandled DOMException: NOT_SUPPORTED_ERR 

Вы также не можете создать Nodes, например, эти «Конструкторы» только интерфейсы.

Тем не менее, вы можете создать новый DOM с помощью метода createDocument, который можно приобрести у объекта document.implementation.

Смежные вопросы