JavaScript创建一个类';s方法静态且可用于其实例

JavaScript创建一个类';s方法静态且可用于其实例,javascript,oop,static,Javascript,Oop,Static,如何使类的方法是静态的(在类本身上可用)并可以从JavaScript中的实例进行访问 class MyClass { constructor() {} method() {} } const myInstance = new MyClass(); myInstance.method(); // calling from instance MyClass.method(); // calling from class 您可以使用static关键字来执行此操作 class A

如何使类的方法是静态的(在类本身上可用)并可以从JavaScript中的实例进行访问

class MyClass {
    constructor() {}
    method() {}
}

const myInstance = new MyClass();

myInstance.method(); // calling from instance
MyClass.method(); // calling from class

您可以使用
static
关键字来执行此操作

class A {
    constructor(){}
    static method(){}
}

const x = new A();
编辑:

x.constructor.method(); // this is possible
A.method();
在Javascript中,静态方法绑定到类而不是实例,因此它们至少只能由构造函数调用
A.prototype
处理实例方法,而函数
A
处理其属性。

调用直接在类上进行,不能在类的实例上调用。但是您可以从实例内部实现对静态成员的调用

使用语法:

this.constructor.staticfunctionName();
ES6类示例

class MyClass {
    constructor() {}
    static staticMethod() {
        console.log('Static Method');
    }
}
MyClass.staticVar = 777;

var myInstance = new MyClass();
// calling from instance
myInstance.constructor.staticMethod();
console.log('From Inside Class : ',myInstance.constructor.staticVar);

// calling from class
MyClass.staticMethod();
console.log('Class : ', MyClass.staticVar);

对于ES5函数类

静态方法的可能重复项不应该根据定义从实例中调用…但是当试图从实例中调用它时,这将不起作用:“Uncaught TypeError:x.method不是函数”很好,我从来不知道这对于类属性也是可能的。