对象是一组无序的原始数据类型(或引用数据类型)序列,并且这个序列以键值对的形式存储.序列中的每一项被称之为属性(函数称为方法),并且每一个属性名必须是唯一的.
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);//40
原文:http://www.cnblogs.com/-Yang-/p/5536432.html