返回顶部

收藏

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. K-Res 发表 2018-10-27 12:10:11 关于Javascript中类成员函数中内嵌函数的this闭包问题
  2. 杨魁 发表 2018-10-25 07:28:13 Under the Hood: NaN of JS
  3. 尖兵 发表 2018-10-25 11:03:47 服务重启导致的Java服务抖动CPU占用高
  4. 可乐加糖 发表 2018-10-23 08:31:16 JavaScript文档生成器JSDuck
  5. 可乐加糖 发表 2018-10-23 08:31:16 JavaScript文档生成器JSDuck
  6. wenming.gapo 发表 2018-10-23 11:32:30 AOP装饰函数与小T的情愫(二)
  7. 尖兵 发表 2018-10-18 13:19:02 Java诊断工具Arthas
  8. 尖兵 发表 2018-10-18 13:19:02 Java诊断工具Arthas
  9. hellas 发表 2018-10-18 14:20:31 AOP装饰函数与小T的情愫
  10. 博主 发表 2018-10-15 10:02:38 生成聚合收款二维码:支付宝、微信、QQ 钱包
  11. axiu 发表 2018-10-14 02:30:40 微信小程序开发总结
  12. xirruiqiang 发表 2018-10-14 08:14:43 round 函数在不同语言中的实现乱象

发表评论