• 读书笔记:对象的属性


    • 访问器属性

    访问器属性不包含数据值,他们包含一堆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版》
    慢慢来,比较快!基础要牢,根基要稳!向大佬致敬!
  • 相关阅读:
    2015年中国500强企业
    汇编语言
    oracle数据库学习路线
    OI生涯回忆录
    NOIP 2020游记
    CF223B Two Strings 题解
    CSP-S 2020游记
    CSP/NOIP 注意事项(2020)
    Luogu P6583 回首过去 题解
    Luogu P2210 Haywire 题解
  • 原文地址:https://www.cnblogs.com/rookie123/p/14284978.html
Copyright © 2020-2023  润新知