zoukankan      html  css  js  c++  java
  • 兼容性

    一个原本是数据属性的属性,代码里还保存着许多与它相关的代码片段。

    现在除了一些变故,我们要改变它。

    现在把它变成访问器属性。

    假设对象为user,此数据属性为age:
    写下user.age是为了得到什么?当然是得到具体的年龄。

    可这句话执行时,get函数会站出来说,使用user.age实际上就是在调用我啊,我开始发力了,我要把我的产出作为你这句话的结果。

     1 function User(name, birthday) {
     2   this.name = name;
     3   this.birthday = birthday;
     4 
     5   // 年龄是根据当前日期和生日计算得出的
     6   Object.defineProperty(this, "age", {
     7     get() {
     8       let todayYear = new Date().getFullYear();
     9       return todayYear - this.birthday.getFullYear();
    10     }
    11   });
    12 }
    13 
    14 let john = new User("John", new Date(1992, 6, 1));
    15 
    16 alert( john.birthday ); // birthday 是可访问的
    17 alert( john.age );      // ……age 也是可访问的

    如此一来,原属性并没有从对象中直接删除,而是改变了属性的类型,从数据属性变为访问器属性。

  • 相关阅读:
    杜教筛学习笔记
    AtCoder Beginner Contest 188 F
    求和公式
    洛谷P4848 崂山白花蛇草水 权值线段树+KDtree
    二次剩余学习笔记
    Miller Rabin素数检测与Pollard Rho算法
    半平面交学习笔记
    凸包习题总结
    多项式半家桶
    CF997解题报告
  • 原文地址:https://www.cnblogs.com/flyover/p/14158320.html
Copyright © 2011-2022 走看看