JavaScript创建一个类';s方法静态且可用于其实例
如何使类的方法是静态的(在类本身上可用)并可以从JavaScript中的实例进行访问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
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不是函数”很好,我从来不知道这对于类属性也是可能的。