我知道,在JavaScript中,我們可以創建,對象的instatnces像創建預定義對象的實例在Javascript
var ins = new myObject();
我知道,窗口,文檔等在javascript..Can我們創建新實例預定義對象這些物體。? 對於前:
是
var inss = new document();
可能嗎?
我知道,在JavaScript中,我們可以創建,對象的instatnces像創建預定義對象的實例在Javascript
var ins = new myObject();
我知道,窗口,文檔等在javascript..Can我們創建新實例預定義對象這些物體。? 對於前:
是
var inss = new document();
可能嗎?
不要混淆對象與構造(或類在大多數OOP語言)。
function MyObject()
{
}
var obj = new MyObject();
之後,您可以訪問給定的使用constructor
屬性對象的構造:在JavaScript中,你使用new
操作者調用構造函數創建對象
var ctor = obj.constructor; // (ctor === MyObject) will be true
從理論上說,你可以創建新的對象與給定對象相同的類型:
var obj1 = new MyObject();
var obj2 = new obj1.constructor();
對於您的情況,您可能會嘗試使用「內置」對象,但它可能不起作用,因爲腳本引擎可能會禁止它。例如,Chrome嘗試使用new document.constructor()
創建新文檔時會拋出TypeError: Illegal constructor
。這是因爲document
的構造函數HTMLDocument
不能直接使用。
是和不是,大部分沒有。
您可以使用window.open
創建新的window
對象。它也會有一個新的document
對象。
您可以通過createDocument
創建一個新的DOM document
,雖然它不一定具有預製的所有特殊功能。您還可以通過createDocumentFragment
創建一個新的文檔片段,這可以非常方便。
The new operator only works with objects that are user defined, or built-ins that have a constructor.文檔和窗口沒有構造函數。
感謝鏈接 –
文件有構造函數,請參閱我的答案。 – Bergi
document
不是一個構造函數,它是一個構造對象。你所要做的就像是說new new Object()
或new {}
。
的document
構造函數是HTMLDocument
但你不能建立這樣的說法,你必須使用document.implementation.createDocument()
不,你不能。儘管這些主機對象中的大多數都具有構造函數(例如HTMLDocument
用於document
),但它們僅用於繼承特性(例如instanceof
運算符),但無法調用。
> document.constructor
HTMLDocument
> new HTMLDocument
Unhandled DOMException: NOT_SUPPORTED_ERR
你也不能創建Node
s例如,這些「建設者」只是接口。
但是,您可以使用createDocument
方法創建一個新的DOM,該方法可在document.implementation
對象處獲得。
您可以模擬您自己的DOM元素的構造函數。以[jsdom](https://github.com/tmpvar/jsdom「jsdom」)爲例。 –
thansk的鏈接 –
我不這麼認爲。試試這個var inss = new document();在控制檯上發出錯誤「TypeError:對象不是函數」 – Adil