zoukankan      html  css  js  c++  java
  • 读书笔记:对象的属性

    • 访问器属性

    访问器属性不包含数据值,他们包含一堆getter和setter函数

    1. 在读取访问属性时,会调用getter函数,这个函数负责返回有效的值;
    2. 在写入访问器属性时,会调用setter函数并传入新值,这个函数负责决定如何处理数据
    1. [[Configurable]] 默认true, 表示可以通过delete来删除属性从而重新定义该属性
    2. [[Enumerable]] 默认true: 表示可以通过for-in循环返回属性
    3. [[Get]] 默认值为undefined
    4. [[Set]] 默认值为undefined

    =====================================================
    应用:设置一个属性的值会导致其他属性发生变化
    在这个例子中,edition的值随着year属性变化

    var book = {
        _year:2004,
        // 编程约定:带下划线的属性要通过方法来访问
        edition:1
    };
    // 定义一个新的属性”year“ , 为它设置访问器属性
    Object.defineProperty(book,"year",{
        get: function(){
            return this._year;
        }
        set: function(newValue) {
            if (newValue > 2004) {
                this._year = newValue;
                this.edition  += newValue - 2004;
            }
        }
    });
    book.year = 2020;
    alert(book.edition);
    
    • 数据属性
      1. [[Configurable]] configurable 表示该属性特征是否可以修改
      2. [[Enumerable]] enumerable
      3. [[Wriable]] writable
      4. [[Value]] 保存值 value

    注意事项:

    1. 可以使用Object.defineProperty()来修改属性的默认特征
    2. configurable默认值为true, 当改为false后,不能再次修改

    参考:

    • 《JavaScript程序设计第3版》
    慢慢来,比较快!基础要牢,根基要稳!向大佬致敬!
  • 相关阅读:
    在阿里云上遇见更好的Oracle(三)
    从传统IT快速走向公共云计算
    在阿里云上遇见更好的Oracle(二)
    Oracle 11g 审计跟踪管理
    在阿里云上遇见更好的Oracle(一)
    Elasticsearch中的DocValues
    初识Django —Python API接口编程入门
    为什么mysqld启动报错
    云计算产品的四件套
    说说云计算中的地域和可用区概念
  • 原文地址:https://www.cnblogs.com/rookie123/p/14284978.html
Copyright © 2011-2022 走看看