JavaScript中,string、number、boolean均為primitive基本類型,也即字符串、數值、布爾值并不是以對象的形式而存在的。不過,由于需要對這三種primitive類型值進行操作,因此JavaScript會自動封裝這三種類型的值,使其作為對象而擁有屬性與方法。以string為例,這種封裝過程如下:
1.當JavaScript遇到對string值進行屬性訪問或者方法調用時,會調用new String(字符串值)自動將該string封裝成一個String對象。
2.JavaScript會訪問這個新創建的對象的屬性或者方法,并返回相應的結果。
3.屬性訪問或者方法調用結束后,JavaScript將立即銷毀這個新創建的對象。
以下面的代碼為例,對JavaScript自動創建的String對象進行屬性寫入操作沒有任何意義,因為這個創建出來的對象在寫入語句結束后就不復存在了:
值得注意的是,上述代碼中的s變量所表示的永遠是primitive的字符串,JavaScript所自動創建的字符串對象存在于執行s.length或者s.newVariable操作的過程中。這可以從以上實驗的最后一行代碼中得到驗證。
除了對Primitive值進行自動封裝,開發人員也可以選擇手動進行相應的過程。與自動封裝不同的是,手動封裝所得到的對象并不會被立即銷毀,因此針對手動封裝的對象所采取的屬性寫入操作是有意義的:
console.log(t == "test");//true
console.log(t === "test");//false
新聞熱點
疑難解答