在Javascript中创建预定义对象的实例

时间:2012-04-30 12:41:56

标签: javascript object window document

我知道在Javascript中我们可以创建像

这样的对象的instatnces
var ins = new myObject();

我知道,窗口,文档等是javascript中的预定义对象。我们可以创建这些对象的新实例。 例如:

var inss = new document();

可能?

5 个答案:

答案 0 :(得分:3)

不要将对象构造函数(或大多数OOP语言中的)混淆。在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();

在您的情况下,您可以尝试使用“内置”对象,但它可能无法工作,因为脚本引擎可能会禁止它。例如,在尝试使用TypeError: Illegal constructor创建新文档时,Chrome会抛出new document.constructor()。这是因为document的构造函数HTMLDocument不能直接使用。

答案 1 :(得分:2)

是和否,绝大多数没有。

您可以使用window创建新的window.open对象。它还将有一个新的document对象。

您可以通过createDocument创建新的DOM document,但它不一定具有预制的所有特殊功能。您还可以通过createDocumentFragment创建一个新文档片段,这非常方便。

答案 2 :(得分:2)

不,你不能。虽然这些宿主对象中的大多数都有构造函数(例如HTMLDocumentdocument),但它们仅用于继承表示(例如instanceof运算符),但不能被调用。

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

您也无法创建Nodes,例如,这些“构造函数”只是接口。

然而,您可以使用createDocument方法创建一个新DOM,该方法位于document.implementation对象。

答案 3 :(得分:1)

答案 4 :(得分:0)

document不是构造函数,它是构造对象。您要做的就是说new new Object()new {}

document的构造函数是HTMLDocument,但你无法以这种方式构造它,你必须使用document.implementation.createDocument()