Creating instances of predefined objects in Javascript

老子叫甜甜 提交于 2019-12-07 09:47:39

问题


I know that in Javascript we can create ,instatnces of object like

var ins = new myObject();

I know that ,window ,document etc are predefined objects in javascript..Can we create new instances of these objects.? For ex:
Is

var inss = new document();

possible?


回答1:


Don't confuse objects with constructors (or classes in most OOP languages). In JavaScript, you create objects by calling constructor functions using the new operator:

function MyObject()
{
}

var obj = new MyObject();

Afterwards you can access the constructor given the object using the constructor property:

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

Theoretically, you can create new objects of the same type as a given object:

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

In your case, you might try the same with "built-in" object, but it will probably not work since the script engine might forbid it. For example, Chrome will throw TypeError: Illegal constructor when trying to create a new document using new document.constructor(). This is because document's constructor, HTMLDocument, is not meant to be used directly.




回答2:


Yes and no, mostly no.

You can create a new window object using window.open. It will also have a new document object.

You can create a new DOM document via createDocument, though it won't necessarily have all the special features of the pre-made one. You can also create a new document fragment via createDocumentFragment, which can be very handy.




回答3:


No, you can't. Although most of these host objects have constructors (e.g. HTMLDocument for document), they are only used for inheritance feautures (e.g. the instanceof operator) but can not be invoked.

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

You also can't create Nodes for example, these "constructors" are just interfaces.

Yet, you can create a new DOM with the createDocument method, which is available at the document.implementation object.




回答4:


The new operator only works with objects that are user defined, or built-ins that have a constructor. document and window don't have constructors.




回答5:


document is not a constructor, it's a constructed object. What you are trying to do is like saying new new Object() or new {}.

The constructor of document is HTMLDocument but you cannot construct it that way, you must use document.implementation.createDocument()



来源:https://stackoverflow.com/questions/10383888/creating-instances-of-predefined-objects-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!