• 2.2 The Object Model -- Reopening Classes and Instances


    1. 你不需要一开始定义一个类的全部内容,你可以通过使用reopen方法重新打开一个类并定义新的属性。

    Person.reopen({
        isPerson: true
    });
    
    Person.create().get('isPerson') //true

    2. 当使用reopen时,你也可以重写已经存在的方法并且调用this._super

    Person.reopen({
        //override 'say' to add an ! at the end
        say: function (thing) {
            this._super(thing + "!");   
        }
    });

    3. reopen被用来增加一个类的所有实例所共享的实例方法和属性,在vanilla JS中(不使用原型)中它不添加指定类的实例方法和属性。

    4. 当你需要为类自身添加一个静态的方法或者静态的属性时,你可以使用reopenClass

    //add static property to class
    Person.reopenClass({
        isPerson: false
    });
    //override property of Person instance
    Person.reopen({
        isPerson: true
    });
    
    Person.isPerson: // false - because it is static property created by 'reopenClass'
    Person.create().get("isPerson");//true
  • 相关阅读:
    luogu2253 好一个一中腰鼓!
    luogu2948 滑雪课
    luogu1556 幸福的路
    luogu1900 自我数
    luogu1632 点的移动
    luogu1999 高维正方体
    树状数组模板
    杜教筛
    [比赛|考试] 9月第一周的考试
    历年NOIP真题总结
  • 原文地址:https://www.cnblogs.com/sunshineground/p/5145832.html
Copyright © 2020-2023  润新知