2010-05-11 54 views
2

對象 Javascript中的所有對象的基類,就像其他語言如Java & C#?字符串是否從Javascript中的對象繼承?

我試着下面的代碼在Firefox中安裝了Firebug。

var t = new Object(); 
var s1 = new String('str'); 
var s2 = 'str'; 
console.log(typeof t); 
console.log(typeof s1); 
console.log(typeof s2); 

控制檯輸出是

object 
object 
string 

所以,S1S2是diffeent類型?

+0

是的,JavaScript中不是基本數據類型的東西都是「對象」。 'String'是一個'Object',它創建一個String類型的原語作爲返回值(來自可選的輸入字符串)。它本身並不是一個「字符串」。查看以下鏈接以獲取更多信息:http://articles.sitepoint.com/article/oriented-programming-1 – FK82 2010-05-11 18:54:22

回答

7

是的,'str'是一個字符串literal,而不是一個字符串object

字符串文字可以訪問所有字符串的對象和方法,因爲JavaScript會臨時將字符串字符串轉換爲字符串對象以運行所需的方法。

最後:

當兩條不同的是其治療的新的屬性和方法。像所有Javascript對象一樣,您可以爲任何String對象分配屬性和方法。您不能將屬性或方法添加到字符串文字。他們被翻譯忽視。

閱讀up more here

2

的過程稱爲裝箱/拆箱。

這意味着只要解釋/編譯器看到作爲對象基本類型,然後它會使用

new Object([primitive]) 

得到一個有效的實例。並以同樣的方式,只要你嘗試使用它作爲一個原始的(如在一個表達式),它會使用

[boxedobject].valueOf() 

,以獲得原始。

在ECMAScript(javascript)中,Object的構造函數能夠將所有原語包裝起來。

+0

我發現問題在給出答案後進行了編輯,因此問題的形式現在完全不同... – 2011-09-05 15:51:57