我知道在Javascript中我们可以创建像这样的对象实例
var ins = new myObject();
我知道,窗口,文档等是 javascript 中的预定义对象。我们可以创建这些对象的新实例吗?例如:
是
var inss = new document();
可能的?
我知道在Javascript中我们可以创建像这样的对象实例
var ins = new myObject();
我知道,窗口,文档等是 javascript 中的预定义对象。我们可以创建这些对象的新实例吗?例如:
是
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();
在您的情况下,您可能会尝试使用“内置”对象,但它可能无法正常工作,因为脚本引擎可能会禁止它。例如,ChromeTypeError: Illegal constructor
在尝试使用new document.constructor()
. 这是因为document
的构造函数 ,HTMLDocument
并不意味着直接使用。
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 Node
s 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.
是和不是,大多数情况下都不是。
您可以window
使用window.open
. 它还将有一个新document
对象。
document
您可以通过创建一个新的 DOM createDocument
,尽管它不一定具有预制的所有特殊功能。您还可以通过创建新的文档片段createDocumentFragment
,非常方便。
new 运算符仅适用于用户定义的对象或具有构造函数的内置对象。document 和 window 没有构造函数。
document
不是构造函数,它是构造对象。你想要做的就像说new new Object()
or new {}
。
document
is的构造函数,HTMLDocument
但你不能那样构造它,你必须使用document.implementation.createDocument()