《6》面向对象的程序设计

  对象:无序属性的集合,可以包含基本值,对象,函数。

  6.1.1 属性类型

    内部才有的特性,描述了属性的特征,分为:数据属性和访问器属性

  1、数据属性:

    • configurable
    • Enumberable
    • Writable
    • Value  
var person = {};
Object.defineProperty(person, 'name',{
    writable: true,
    value: 'huilin'
});

  Tips: 1、configurable设置成false后,就不能重新设置成true,会导致报错

      2、用Object.defineProperty 去定义属性,如果不指定configurable、enumberable、writable ,默认都是false,一般情况下不会使用这个。

  2、访问器属性

    • configurable
    • Enumberable
    • get
    • set

  用于:设置一个属性导致另一个属性的变化

var book= {
       _year: 2004,
      edit: 1
};
Object.defineProperty(book, 'year', {
    get: function() {
         return this._year   
    },
    set: function(newValue) {
         if(newValue > 2004) {
             this._year = newValue;
             this.edit += newValue - 2004;
         }
    }
});

  3、读取属性的特性

  Object.getOwnPropertyDescriptor(对象,对象里面的属性名)

 

var person = {};

Object.defineProperties(person, {
    _year: {
          value: 2     
         }
});

var descriptor = Object.getOwnPropertyDescriptor(person, '_year');
descriptor.value // 2

 

 

二、创建对象

(一)工厂模式

function createPerson() {
    var o = new Object(); // 因为这里面用了new,则没法解决对象识别的问题
    o.name = 'shabi';
    o.sayName = function() {
        alert(this.name);
    }
}

 

(二)构造函数模式

 

posted @ 2018-09-12 22:19  青梅QM  阅读(151)  评论(0)    收藏  举报