对象基础


对象是一组无序的原始数据类型(或引用数据类型)序列,并且这个序列以键值对的形式存储.序列中的每一项被称之为属性(函数称为方法),并且每一个属性名必须是唯一的.

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

posted @ 2016-05-27 23:12  肖杨  阅读(188)  评论(0编辑  收藏  举报