返回顶部

收藏

JavaScript中的类继承实现方式

更多
/**
 * 把一个实例方法添加到一个类中
 * 这个将会添加一个公共方法到 Function.prototype中,
 * 这样通过类扩展所有的函数都可以用它了。它要一个名称和一个函数作为参数。
 * 它返回 this。当我写一个没有返回值的方法时,我通常都会让它返回this。
 * 这样可以形成链式语句。
 *
 * */
Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};
/**
 * 它会指出一个类是继承自另一个类的。
 * 它必须在两个类都定义完了之后才能定义,但要在方法继承之前调用。
 *
 * */
Function.method('inherits', function (parent) {
    var d = 0, p = (this.prototype = new parent());

    this.method('uber', function uber(name) {
        var f, r, t = d, v = parent.prototype;
        if (t) {
            while (t) {
                v = v.constructor.prototype;
                t -= 1;
            }
            f = v[name];
        } else {
            f = p[name];
            if (f == this[name]) {
                f = v[name];
            }
        }
        d += 1;
        r = f.apply(this, Array.prototype.slice.apply(arguments, [1]));
        d -= 1;
        return r;
    });
    return this;
});
/**
 *
 * The swiss方法对每个参数进行循环。每个名称,
 * 它都将parent的原型中的成员复制下来到新的类的prototype中
 *
 * */
Function.method('swiss', function (parent) {
    for (var i = 1; i < arguments.length; i += 1) {
        var name = arguments[i];
        this.prototype[name] = parent.prototype[name];
    }
    return this;
});

标签:javascript

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. Perchouli 发表 2017-07-05 08:45:43 隐介藏形——ReactJS源码索引
  2. zak 发表 2018-08-31 02:34:54 获取dom文档string的方法
  3. 博主 发表 2018-01-15 21:50:40 大概算一个简单的回顾
  4. Becca Nelson 发表 2018-08-30 05:00:00 Dependency Inversion in React with Render Props
  5. 博主 发表 2018-08-30 08:33:50 使用JavaScript / JQuery导出 html table 数据至 Excel 兼容IE/
  6. techug 发表 2018-08-28 00:53:11 (…)这三个点在JavaScript中是个啥意思?
  7. 小丁 发表 2018-08-27 11:28:29 Jboot v1.6.4 发布,修复 Fastjson 序列化问题
  8. oldj 发表 2018-08-24 14:00:00 改进版迷宫
  9. K-Res 发表 2018-08-22 14:50:50 屏蔽Cesium的默认双击追踪选中entity行为
  10. 博主 发表 2018-08-21 11:28:26 如何生成es6项目
  11. 博主 发表 2018-08-21 11:28:26 如何调试nodejs代码
  12. 博主 发表 2018-08-21 11:28:26 nodejs的execa库使用

发表评论