私はJavascriptで、次のようなオブジェクトのインスタンスを作成できることを知っています
var ins = new myObject();
、window、documentなどがjavascriptで事前定義されたオブジェクトであることを知っています。これらのオブジェクトの新しいインスタンスを作成できますか?例
:
var inss = new document();
可能?
私はJavascriptで、次のようなオブジェクトのインスタンスを作成できることを知っています
var ins = new myObject();
、window、documentなどが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();
あなたの場合、「組み込み」オブジェクトで同じことを試すかもしれませんが、スクリプトエンジンがそれを禁止している可能性があるため、おそらく機能しません。たとえば、Chromeは、TypeError: Illegal constructor
を使用して新しいドキュメントを作成しようとするとスローしますnew document.constructor()
。これは、document
のコンストラクターHTMLDocument
が直接使用されることを意図していないためです。
はい、いいえ、ほとんどいいえ。
を使用して新しいwindow
オブジェクトを作成できますwindow.open
。また、新しいdocument
オブジェクトがあります。
document
を介して新しいDOMを作成できますcreateDocument
が、事前に作成されたDOMのすべての特別な機能を備えているとは限りません。を介して新しいドキュメントフラグメントcreateDocumentFragment
を作成することもできます。これは非常に便利です。
いいえ、できません。これらのホストオブジェクトのほとんどにはコンストラクター(例:HTMLDocument
for document
)がありますが、継承機能(例:演算子)にのみ使用され、instanceof
呼び出すことはできません。
> document.constructor
HTMLDocument
> new HTMLDocument
Unhandled DOMException: NOT_SUPPORTED_ERR
たとえば、を作成することもできません。これらNode
の「コンストラクタ」は単なるインターフェイスです。
createDocument
ただし、オブジェクトで使用可能なメソッドを使用して、新しいDOMを作成できdocument.implementation
ます。
new演算子は、ユーザー定義のオブジェクト、またはコンストラクターを持つ組み込みオブジェクトでのみ機能します。ドキュメントとウィンドウにはコンストラクターがありません。
document
コンストラクターではなく、構築されたオブジェクトです。あなたがやろうとしていることは、new new Object()
またはと言うようなものですnew {}
。
のコンストラクタはdocument
ですHTMLDocument
が、そのように構築することはできません。使用する必要がありますdocument.implementation.createDocument()