如果您希望使用像cocos2d-x这样的框架,我会尽力澄清
cc.Sprite.extend();
这里的Sprite是类,我们如何在不使用new
关键字实例化的情况下调用方法
我有一个课程
var superClass = function(){
this.init = function(){
console.log("new class constructed !")
};
};
调用init我必须这样做
obj = new superClass();
obj.init();
但是如何在不实例化类的情况下引用方法
基本上,您想要的是静态方法。有多种方法可以实现这一目标。我认为,使用对象文字可以为您轻松完成。
垃圾对象:
var superClass = {
init: function(){
console.log("new class constructed !")
}
};
superClass.init();
https://jsfiddle.net/ckgmb9fk/
但是,您仍然可以使用函数构造函数定义对象,然后将静态方法添加到“类”。例如,您可以执行以下操作:
var SuperClass = function(){};
SuperClass.prototype.methodA = function() {
console.log("methodA");
};
SuperClass.init = function() {
console.log("Init function");
}
SuperClass.init();
var sc = new SuperClass();
sc.methodA();
请注意,该方法init
在SuperClass
实例对象中将不可用,因为它在对象原型中不可用。
https://jsfiddle.net/mLxoh1qj/
扩展原型:
var SuperClass = function(){};
SuperClass.prototype.init = function() {
console.log("Init");
};
SuperClass.prototype.init();
var sc = new SuperClass();
sc.init();
https://jsfiddle.net/0ayct1ry/
如果init
要从SuperClass
原型和对象实例访问函数,则此解决方案很有用。
ES6:
ES6更好
class SuperClass {
static init() {
console.log("new class constructed !")
}
}
SuperClass.init();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句