對象是一組無序的原始數據類型(或引用數據類型)序列,而且這個序列以鍵值對的形式存儲.序列中的每一項被稱之爲屬性(函數稱爲方法),而且每個屬性名必須是惟一的.
var ageGroup = { 30:"children", 100:"very old" }; console.log(ageGroup["30"]);//屬性名能夠是字符串或者數字,但若是屬性名是數字,它就必須用方括號來取值
原始數據類型以值的形式直接將值存儲到變量裏,值不變
var person = "Kobe";
var otherPerson = person;
person = "Bryant";
console.log(person);//Bryant
console.log(otherPerson);//Kobe
引用數據類型的值是是以引用的形式存儲,值會變
var person = {name: "Kobe"};
var otherPerson = person;
person.name = "Bryant";
console.log(person.name);//Bryant
console.log(otherPerson.name);//Bryant
可配置性(Configurable):指明該屬性是否能夠被刪除
var person = {};
Object.defineProperty(person, "name", {configurable: false, value: "Kobe"});
defineProperty將屬性添加到對象,或修改現有屬性的特性,三個值是對象,屬性名,屬性
Object.defineProperty(person, "age", {configurable: true, value: 30});
person.name = "Bryant";
console.log(person.name);//Kobe
console.log(person.age);//30
person.age = 40;
delete person.name;
delete person.age;
console.log(person.name);//Kobe
console.log(person.age);//undefind
枚舉性(enumerable):指明該屬性是否能在for/in中被返回
var person = {};
Object.defineProperty(person, "name", {configurable: true, enumerable: true, value: "Kobe"});
Object.defineProperty(person, "age", {configurable: true, enumerable: false, value:30 })//將age屬性隱藏
for(var x in person) { console.log(x + ":" + person[x]); }//name:Kobe
for,in是遍歷對象的每個屬性,for(var 變量 in 須要遍歷的對象或數組),通常來講專門針對json循環遍歷
可寫性(writable):指明該屬性可否被修改
var person = {};
Object.defineProperty(person, "name", {writable: false, value: "Kobe"});
Object.defineProperty(person, "age", {writable: true, value: 30});
person.name = "Bryant";
person.age = 40;
console.log(person.name);//Kobe
console.log(person.age);//40json