创建在Javascript中预定义的对象实例(Creating instances of prede

2019-09-16 21:05发布

我知道,在JavaScript中,我们可以创建,对象的instatnces像

var ins = new myObject();

我知道,窗口,文件等是预定义的对象javascript..Can我们创建这些对象的新实例? 对于例如:

var inss = new document();

可能?

Answer 1:

不要(在大多数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();

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



Answer 2:

是的,没有,多数还没有。

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

您可以创建一个新的DOM document通过createDocument ,虽然它不一定会预先做好之一的特殊功能。 您也可以通过创建一个新文档片段 createDocumentFragment ,这是非常方便的。



Answer 3:

不,你不能。 虽然这些主机对象有构造函数(如HTMLDocument用于document ),它们仅用于继承feautures(例如instanceof运算符),但不能被调用。

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

你也不能创建Node小号例如,这些“建设者”只是接口。

然而,你可以创建一个新的DOM createDocument方法,它可在document.implementation对象。



Answer 4:

新的运营商只适用于用户被定义的对象,或具有构造内置插件。 文件和窗口没有构造函数。



Answer 5:

document不是构造函数,这是一个构造的对象。 你所要做的就像是说new new Object()new {}

的构造documentHTMLDocument ,但你不能建立这样的说法,你必须使用document.implementation.createDocument()



文章来源: Creating instances of predefined objects in Javascript