2012-07-18 24 views
1

你能解釋下面的一段代碼嗎?它在我的瀏覽器控制檯中工作。那麼這是如何工作的?新的關鍵字根本不會創建新的實例,或者它是如何創建的?Javascript新的關鍵字 - 代碼的說明請求

var myObject = new Object(); // Produces an Object() object. 
    myObject['0'] = 'f'; 
    myObject['1'] = 'o'; 
    myObject['2'] = 'o'; 
    console.log(myObject); // Logs Object { 0="f", 1="o", 2="o"} 

    var myString = new String('foo'); // Produces a String() object. 
    console.log(myString); // Logs foo { 0="f", 1="o", 2="o" 

請說明。

+0

是什麼讓你認爲新的關鍵字不會創建一個新的實例? – Quentin 2012-07-18 08:40:57

+1

@Quentin我不認爲他認爲新的關鍵字不會創建新的實例;他不知道它做了什麼,並將其作爲可能的解釋提供。 – funkybro 2012-07-18 08:41:52

+0

@Quentin - 我不認爲新的關鍵字不會像funkybro說的那樣創建一個新的實例。如果它的新實例如何將myObject的值傳遞給myString變量。有點困惑。 – Futur 2012-07-18 08:44:42

回答

1

如果一個新的實例,它是如何攜帶myObject的值到MyString的變量

事實並非如此。您正在使用一個字符串初始化的String對象:

new String('foo'); 

是一個完全不同的給你分配給對象的三個屬性的字符。作爲比較,replace the second foo with bar

+0

你說得對,所以它意味着String對象存儲了以數組類型分配的值..所以這就是爲什麼myString [0] ==='f'; myString [1] ==='o'; myString [2] ==='o'..我的假設是否正確? – Futur 2012-07-18 08:53:20

+1

是的,沒錯。 – Quentin 2012-07-18 09:05:19

0

這是完全正常的行爲:

new String創建一個Object,如果你鍵入"var myString = new String('moo')",你會得到不同的值的另一個對象。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/#se‌​ction_7

+0

我剛剛通過頁面。無法找到上述情況的解釋。你能幫忙找到嗎?? – Futur 2012-07-18 08:49:31

+0

[https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/#section_7](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/#section_7) ** new String **創建**一個Object **,如果您要鍵入「var myString = new String('moo')」,您將獲得具有不同值的另一個對象。 – mdziekon 2012-07-18 08:51:31