从类调用方法而不实例化它

天空步行者

如果您希望使用像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();

请注意,该方法initSuperClass实例对象中将不可用,因为它在对象原型中不可用。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

指针对象函数调用而不实例化它

获取类的属性数组而不实例化它?

如何在不实例化的情况下调用类的方法?

在不实例化对象的情况下调用外部方法

迭代类型而不实例化它

初始化类而不实例化?

检查类实例是否可以在不实例化的情况下调用

测试是否可以使用Activator实例化一个类类型而不实例化它

如何检查一个类是否继承另一个类而不实例化它?

在不实例化或扩展类A的情况下访问类A内部的方法?

是否可以在不实例化类的情况下导入类方法?

使用StoryboardID访问UIViewController而不实例化它

使用C#在Unity中调用不实例化的非静态方法

如何在不实例化类的情况下对方法进行单元测试?

检查类是否为类的子类而不实例化

Typescript类方法,它采用调用方的实例类型

为什么我无法实例化它并调用“计算”方法?

具有不实例化对象的静态类是不好的做法

A类实例化B类实例。ClassB的实例如何调用A类的方法?

装饰器调用没有类实例化的类方法?

有没有一种方法可以在不实例化对象的情况下列出类的属性?

实例化类以调用方法还是使用静态方法?

Spring Beans:实例化后调用特定的类方法

PHP - 从我实例化对象的类调用方法

将“对象”实例化到其他类并调用方法

如何从 PHP 中的动态实例化类调用方法?

如何分配而不实例化

在 C++ 中可以通过从私有实例化类调用方法而不重新实现它来覆盖虚拟方法吗?

WPF:XAML:给 DataContext 一个名称而不实例化它