首页 > 代码库 > JavaScript 面向对象的程序设计记录笔记

JavaScript 面向对象的程序设计记录笔记

以下为JavaScript高级程序设计第六章面向对象的程序设计读书笔记记录。

对象存在两个属性: 数据属性/ 访问器属性。

  数据属性包括四个值: Configurable: 默认值为true, 表示能否通过delete删除属性重新定义;能否修改属性特性,或者能否吧属性修改为访问器属性。

            Enumable:  表示能否通过for in循环返回属性。默认值为true。

            writable: 表示能否修改属性,默认值为true。

            Value:包含这个属性的数据值。

  访问器属性包括四个值:Configurable: 默认值为true, 表示能否通过delete删除属性重新定义属性;能否修改属性特性,或能否修改为数据属性。

            Enumable: 表示能否通过for in循环返回属性, 默认值为true。

            Get: 在读取属性时调用的函数,默认值为undefined.

                                 Set: 在写入属性时调用的函数,默认值为undefined。

其中涉及到Object.defineProperty()/Object.defineProperties()/Object.getOwnPropertyDescriptor()等方法。

  object.defineProperty(), 传入三个值,第一个为定义属性的对象,第二个为定义属性的对象属性,第三个为属性描述符。如下:

    var obj = {};

    Object.defineProperty(obj, ‘name‘, {value: ‘Tom‘});

  object.defineProperties(), 传入两个值,可定义多个属性特性,第一个为定义属性的对象,第二个为定义属性特性的属性健值对,如下:

    var obj = {};

    Object.defineProperties(obj, {

      _year: { value: 123}, // 属性添加‘_’前缀,表示该属性只能通过对象的访问器属性进行访问,即get()/set()方法。

      name: {value: ‘Tom‘},

      year: {

        get: function(){

          return this._year;

        }

      }

    });

  Object.getOwnPropertyDesciptor(), 表示获取某个属性的描述符(该数据属性或访问器属性),该方法传入两个参数,第一个表示属性所在的对象,第二个表示描述符的属性名称,返回值为一个对象。如下:

  引用上述定义的obj对象,调用Object.getOwnPropertyDescrptor().

  var descriptor = Object.getOwnPropertyDescriptor(obj, _year);

  console.log(descriptor.value); // 输出123

  console.log(descriptor.get);  // 输出undefined  

  var descriptor2 = Object.getOwnPropertyDescriptor(obj, year);  

  console.log(descriptor.value); // 输出undefined

  console.log(descriptor.get);  // 输出function  

    

JavaScript 面向对象的程序设计记录笔记