Cc.js.extend怎么用,没有相关文档

在creator的《CCClass 进阶参考》这一节里有一句:

如果你想实现继承的父类和子类都不是 CCClass,只是原生的 JavaScript 构造函数,你可以用更底层的 API cc.js.extend 来实现。

我就想用这个来实现基础类的继承,可是在文档里没有任何相关内容,API里面也找不到。是不是可以给个文档或者简单的例子也行,最好放到文档中去。

不然你说可以用,问题是让别人怎么用呢?

1赞

API文档:http://cocos.com/docs/creator/api/modules/js.html#method_extend
函数代码:

    /**
     * Derive the class from the supplied base class.
     * Both classes are just native javascript constructors, not created by cc.Class, so
     * usually you will want to inherit using {{#crossLink "cc/Class:method"}}cc.Class {{/crossLink}} instead.
     *
     * @method extend
     * @param {Function} cls
     * @param {Function} base - the baseclass to inherit
     * @return {Function} the result class
     */
    extend: function (cls, base) {
        if (CC_DEV) {
            if (!base) {
                cc.error('The base class to extend from must be non-nil');
                return;
            }
            if (!cls) {
                cc.error('The class to extend must be non-nil');
                return;
            }
            if (Object.keys(cls.prototype).length > 0) {
                cc.error('Class should be extended before assigning any prototype members.');
            }
        }
        for (var p in base) if (base.hasOwnProperty(p)) cls[p] = base[p];
        cls.prototype = Object.create(base.prototype);
        cls.prototype.constructor = cls;
        return cls;
    }

文档是有点简单了,看一下代码才知道怎么回事

这个代码看了也没什么用,关键是要有例子,比如怎么继承,怎么重载方法,怎么生成类对象,JS各种不同的类框架都不一样。这个还不知道有没有方法的重载。

这个 API 属于比较进阶的内容,主要是引擎内部使用。对外部开发者来说,只有熟悉 javascript 原型链继承的开发者才推荐使用。如果你不熟悉的话给了范例反而是鼓励你采用不熟悉的技术。所以文档就不详细介绍了,而且也有点超出引擎的范畴。
建议普通开发者只用 CCClass 实现继承就好,效率上也不会相差太多,而且可读性会好很多。