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版》
    慢慢来,比较快!基础要牢,根基要稳!向大佬致敬!
  • 相关阅读:
    适配iOS 10以及Xcode 8(转载)
    React-nwb的使用
    Android与JS混编(多图选择器)
    Android与JS混编(js调用android相机扫描二维码)
    Android与JS混编(js调用android相机)
    iOS: FFmpeg的使用
    UITableView/UICollectionView使用技巧
    IOS MapKit框架的使用(专门用于地图显示)
    iOS 地理编码 / 反地理编码
    iOS地图 -- 定位使用
  • 原文地址:https://www.cnblogs.com/rookie123/p/14284978.html
Copyright © 2011-2022 走看看