Class javascript:如何在不使用new关键字的情况下从类创建新实例
我想使用类创建ES6的简单插件。但不使用新的关键字。可以从类中自动返回新实例 例如: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();
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插件的基本模板吗?在这种情况下,即使您删除了构造函数,它仍然可以工作: