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

相關文章
相關標籤/搜索