zoukankan      html  css  js  c++  java
  • 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  

        

  • 相关阅读:
    选择前端编辑器
    由看书引发的一些思考
    不是真饿的时候吃些饱腹感强的东西
    微信浏览网页骗局
    辣椒你还吃着吗
    观影感悟
    python中函数加括号与不加括号
    视频流媒体服务器直播点播平台可以接入其他平台播放视频吗?
    视频直播点播流媒体服务器报accept4 () failed (24: Too many open files)错误解决方法
    视频直播点播流媒体服务器报worker_connections are not enough错误解决方法
  • 原文地址:https://www.cnblogs.com/lzj0824/p/6946943.html
Copyright © 2011-2022 走看看