2014-01-31 38 views
2

據說所有的都是javascript中的對象。但是我發現像null,undefined,true,'foo'這樣的原始值不是對象。真的嗎?JavaScript中的對象是什麼?

什麼是在JavaScript中的對象和什麼是JavaScript中的非對象?什麼是原始的價值呢?

如果我理解以下是真的嗎?

var str1 = "hello world!"; // primitive value 
var str2 = String("hello world!");// object value 
+1

一切,但原始的值對象。 –

回答

5

JavaScript有兩類值

  • Primitives - 數字,字符串,布爾,不確定的,空

  • Objects - 所有其他價值,包括數組和函數

原始之間的主要區別es和對象是基元是不變的和自定義/ adhoc屬性不能被分配給原始值。


數字,字符串和布爾基元類型具有相應的對象類型:數字,字符串和布爾值。然而,沒有相應的對象類型爲undefined或null - 這些值是孤獨的單身人士。

關聯類型包含[prototype],當應用隱式轉換時,它允許原語以其他方式「行爲」對象在該方法中可以對其調用。例如,"foo".trim()調用String.prototype.trim函數。

數/字符串/布爾函數,當不用作構造函數,也作爲轉換適用的原始值。

"foo"      // is string (primitive) 
String("foo")    // is string (primitive) 
new String("foo")   // is String (object) 
"foo" === String("foo")  // -> true 
"foo" === new String("foo") // -> false 

一般應該使用原始類型來避免混淆。

+0

請參閱最新的問題。 –

+0

是這個原始物體還是物體? 「foo」=== new String(「foo」)// - > false –

+1

''foo「'計算爲一個原始字符串,但是'new String(」foo「)'計算爲一個String對象。在'==='的規則下,一個Object只等於*本身*(如果因爲隱式轉換使用了'==',它仍然是真的)。 – user2864740

2

It is said that all are the objects in javascript. But I found that the primitive values like null, undefined, true, 'foo' are not objects.

如果你讀了documentation,它已經給

在JavaScript中,幾乎一切都是對象。除null和undefined之外的所有基本類型 都被視爲對象。它們可以被賦予 屬性(某些類型的賦值屬性不是永久的),並且它們具有對象的所有特性。

List of data types in Javascript

相關問題