JavaScript最重要的数据类型就是对象。JavaScript的数据类型分为两类:一是引用类型,即Object;而是基础类型,即Number,String,Boolean,Undefined 和 Null。基础类型和引用类型的区别在于:基础类型的值是不可变的;引用类型的值是可变的,详情参见JavaScript(三):基本类型和引用类型的区别。
什么是对象
对象是无序属性的集合,其属性可以包含基本值、对象或者函数。严格来说,对象是一组没有特定顺序的值。对象的每一个属性和方法都有一个名字,而这个名字都映射到这个值。
如下是一个简单的对象:
var myFirstObject = {firstName: "Richard", favoriteAuthor: "Conrad"};
把对象想象成一张列表,其中每一项(对象的属性或方法)都以键值对的方式存储。
myFirstObject
的属性是firstName
,favoriteAuthor
;对应的值为"Richard"
,"Conrad"
。
对象的属性名称可以是String或者Number,对象属性名称如果是Number类型,那么就只能通过综括号加属性名的访问方式访问。
var ageGroup = {30: "Children", 100:"Very Old"};
console.log(ageGroup.30)
// This will throw an error
// This is how you will access the value of the property 30, to get value "Children"
console.log(ageGroup["30"]); // Children
//It is best to avoid using numbers as property names.
引用类型和基本类型
引用类型和基本类型的重要区别在于:引用类型的保存指针,而不是像基本类型一样,直接根据变量保存值。如以下两个例子所示。
一是,基本类型的赋值:
// The primitive data type String is stored as a value
var person = "Kobe";
var anotherPerson = person; // anotherPerson = the value of person
person = "Bryant"; // value of person changed
console.log(anotherPerson); // Kobe
console.log(person); // Bryant
anotherPerson
并不会随着person
值的变化而变化。
二是引用类型的赋值:
var person = {name: "Kobe"};
var anotherPerson = person;
person.name = "Bryant";
console.log(anotherPerson.name); // Bryant
console.log(person.name); // Bryant
在这里,我们将person
对象赋值给anotherPerson
对象,但是由于person
保存的是指针,因此 我们改变person.name
为"Bryant"
,anotherPerson
的name
属性也会变成"Bryant"
。
对象的属性是有特性的
资料来源:
《JavaScript Objects in Detail》http://javascriptissexy.com/javascript-objects-in-detail/