js对象的理解

一. 如何理解js中的对象

  1.抽象的角度:针对现实中的具体事物的一种抽象。

  2.数据的角度:将无需的变量集合在一起。

二. 对象的特性:通过设置Object的defineProperty方法实现

  Object.defineProperty(param1,param2,param3)param1需要定义属性的对象。param2需被定义或修改的属性名。param3需被定义或修改的属性的描述符。

  1.可配置性:configurable(true/false)默认值为true,表明属性是否可删除

    

       var person = {
           name: "zhangsan",
           age: 21,
           sayName: function() {
               console.log(this.name);
           }
       };

       Object.defineProperty(person, "name", {
           configurable: false
       });

  
    false表示不能删除,所以依然能够打印出zhangsan

    打印结果为:zhangsan,21

  2.枚举性:enumerable(true/false)默认值为true,表明属性的可访问性

    

       var person = {
           name: "zhangsan",
           age: 21,
           sayName: function() {
               console.log(this.name);
           }
       };

       Object.defineProperty(person, "name", {
           enumerable: false
       });
       for(var attr in person) {
           console.log(attr + ":" + person[attr]);
       }

    

    false表示不能访问到person对象的name属性,所以控制台打印不出person的name

    打印结果为:

      age:21
      sayName:function () {
        console.log(this.name);
      }

  3.可修改:writable(true/false)默认值为true,表明属性的可修改性

    

var person = {
           name: "zhangsan",
           age: 21,
           sayName: function() {
               console.log(this.name);
           }
       };
Object.defineProperty(person, "name", {
            writable: false
        });
        person.name = "lis";
        console.log(person.name);

    

    false表示不能修改,所以打印结果还是zhangsan,如果是true或者不设置,打印结果就是lis,21

    打印结果为:zhangsan,21

posted @ 2015-12-27 21:46  ShirleyHe  阅读(1164)  评论(0编辑  收藏  举报