Class javascript:如何在不使用new关键字的情况下从类创建新实例

Class javascript:如何在不使用new关键字的情况下从类创建新实例,class,ecmascript-6,Class,Ecmascript 6,我想使用类创建ES6的简单插件。但不使用新的关键字。可以从类中自动返回新实例 例如: class Rectangle{ constructor(x, y){ this.x = x, this.y = y } eq(){ console.log('Result ' + this.x * this.y ) } } const myRect = new Rectangle(10, 10); myRect.eq();

我想使用类创建ES6的简单插件。但不使用新的关键字。可以从类中自动返回新实例

例如:

class Rectangle{
    constructor(x, y){
        this.x = x,
        this.y = y
    }

    eq(){
        console.log('Result ' + this.x * this.y )
    }

}

const myRect = new Rectangle(10, 10);
myRect.eq();
我想这样用

Rectangle.eq(10, 10);

Reflect.construct做同样的事情:

类矩形{
构造函数(x,y){
这个,x=x,
这个。y=y
}
等式(){
console.log('Result'+this.x*this.y)
}
}

构造(矩形[10,10]).eq()您可以使用模块设计模式

var Rectangle = (function() {
  return {
    eq: function(x, y) {
      console.log(x * y);
    }
  };
})();

Rectangle.eq(2,5); 

检查此处以获取参考:

eq()
定义为。这样您就不必实例化类,但可以直接使用它。

如果您似乎不需要类,为什么要使用它们?类可能不是解决问题的正确方法。您可以添加一个静态方法,如
static eq(x,y){return new this(x,y).eq();}
来实现您想要的,但是除非有比您显示的更多的内容,否则类是不必要的。我想问题是。。。是否有办法将“eq()”转换为类方法而不是实例方法,但这与定义中的“this”没有任何意义。它可以工作,但不应在函数中使用“this”关键字是,因为
this
引用类的实例。当您使用静态方法时,您没有实例。谢谢。但是我对另一个函数Uncaught TypeError中的调用函数有问题:this.msg不是一个函数@БСжжжжжжжжжжжжж1078。此
所指的内容取决于函数的调用方式。如果一个静态方法被称为
Foo.bar()
,那么
这个
bar
内部的
将引用
Foo
,即类/构造函数本身。@FelixKling您能给我发送创建javascript插件的基本模板吗?在这种情况下,即使您删除了构造函数,它仍然可以工作: