前面的話
javascript的資料型別可以分為兩種:原始型別和參考型別。原始型別也稱為基本型別或簡單型別,javascript基本資料型別包括Undefined、Null、Boolean、Number和String五種,而參考型別也稱為複雜型別,在Javascript中是Object。與此相對應,它們的值也分別被稱為原始值和複雜值
特性
原始值(primitive value)
有哪些類型是原始型呢?
typeof運算子
注意:
複雜值
儲存方式
堆疊儲存
堆疊存放
訪問方式
按值存取
var myString = 'foo'; var myStringCopy = myString; var myString = null; console.log(myString,myStringCopy);//null,'foo'
引用訪問
var myObject = {}; var copyOfMyObject = myObject;//没有复制值,而是复制了引用 myObject.foo = 'bar';//操作myObject中的值 //现在如果输出myObject和copyOfMyObject,则都会输出foo属性,因为它们引用的是同一个对象 console.log(myObject,copyOfMyObject);//Object{foo="bar"}
比較方式
var price1 = 10; var price2 = 10; var price3 = new Number('10'); var price4 = price3; console.log(price1 == price2);//true console.log(price1 == price3);//false price4 = 10; console.log(price4 == price3);//true console.log(price4 === price3);//false var objectFoo = {same:'same'}; var objectBar = {same:'same'}; console.log(objectFoo == objectBar);//false var objectA = {foo: 'bar'}; var objectB = objectA; console.log(objectA == objectB);//true
動態屬性
var str = 'test'; str.property = true; console.log(str.property);//undefined var objA = {property: 'value'}; var pointer1 = objA; var pointer2 = pointer1; objA.property = null; console.log(objA.property,pointer1.property,pointer2.property);//null null null
梱包タイプ
コンストラクターによって作成されたオブジェクトとしてプリミティブ値が使用される場合、JavaScript はオブジェクトのプロパティとメソッドを使用できるようにそれをオブジェクトに変換し、オブジェクトのプロパティを破棄してプリミティブ値に戻します。