js对象的理解

一. 如何理解js中的对象this

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

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

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

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

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

    

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

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

  
    false表示不能删除,因此依然可以打印出zhangsanio

    打印结果为:zhangsan,21console

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

    

       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的namefunction

    打印结果为:

      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

相关文章
相关标签/搜索