我知道,在JavaScript中,我们可以创建,对象的instatnces像
var ins = new myObject();
我知道,窗口,文件等是预定义的对象javascript..Can我们创建这些对象的新实例? 对于例如:
是
var inss = new document();
可能?
我知道,在JavaScript中,我们可以创建,对象的instatnces像
var ins = new myObject();
我知道,窗口,文件等是预定义的对象javascript..Can我们创建这些对象的新实例? 对于例如:
是
var inss = new document();
可能?
不要(在大多数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
,并不意味着可以直接使用。
是的,没有,多数还没有。
您可以创建一个新的window
使用对象window.open
。 它也将有一个新document
对象。
您可以创建一个新的DOM document
通过createDocument
,虽然它不一定会预先做好之一的特殊功能。 您也可以通过创建一个新文档片段 createDocumentFragment
,这是非常方便的。
不,你不能。 虽然这些主机对象有构造函数(如HTMLDocument
用于document
),它们仅用于继承feautures(例如instanceof
运算符),但不能被调用。
> document.constructor
HTMLDocument
> new HTMLDocument
Unhandled DOMException: NOT_SUPPORTED_ERR
你也不能创建Node
小号例如,这些“建设者”只是接口。
然而,你可以创建一个新的DOM createDocument
方法,它可在document.implementation
对象。
新的运营商只适用于用户被定义的对象,或具有构造内置插件。 文件和窗口没有构造函数。
document
不是构造函数,这是一个构造的对象。 你所要做的就像是说new new Object()
或new {}
的构造document
是HTMLDocument
,但你不能建立这样的说法,你必须使用document.implementation.createDocument()