在creator的《CCClass 进阶参考》这一节里有一句:
如果你想实现继承的父类和子类都不是 CCClass,只是原生的 JavaScript 构造函数,你可以用更底层的 API cc.js.extend 来实现。
我就想用这个来实现基础类的继承,可是在文档里没有任何相关内容,API里面也找不到。是不是可以给个文档或者简单的例子也行,最好放到文档中去。
不然你说可以用,问题是让别人怎么用呢?
在creator的《CCClass 进阶参考》这一节里有一句:
如果你想实现继承的父类和子类都不是 CCClass,只是原生的 JavaScript 构造函数,你可以用更底层的 API cc.js.extend 来实现。
我就想用这个来实现基础类的继承,可是在文档里没有任何相关内容,API里面也找不到。是不是可以给个文档或者简单的例子也行,最好放到文档中去。
不然你说可以用,问题是让别人怎么用呢?
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 实现继承就好,效率上也不会相差太多,而且可读性会好很多。