我知道在Javascript中我们可以创建像
这样的对象的instatncesvar ins = new myObject();
我知道,窗口,文档等是javascript中的预定义对象。我们可以创建这些对象的新实例。
例如:
是
var inss = new document();
可能?
答案 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)
HTMLDocument
为document
),但它们仅用于继承表示(例如instanceof
运算符),但不能被调用。
> document.constructor
HTMLDocument
> new HTMLDocument
Unhandled DOMException: NOT_SUPPORTED_ERR
您也无法创建Node
s,例如,这些“构造函数”只是接口。
然而,您可以使用createDocument
方法创建一个新DOM,该方法位于document.implementation
对象。
答案 3 :(得分:1)
The new operator only works with objects that are user defined, or built-ins that have a constructor.文档和窗口没有构造函数。
答案 4 :(得分:0)
document
不是构造函数,它是构造对象。您要做的就是说new new Object()
或new {}
。
document
的构造函数是HTMLDocument
,但你无法以这种方式构造它,你必须使用document.implementation.createDocument()