You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
classClassWithStaticMethod{staticstaticMethod(){return'static method has been called.';}}console.log(ClassWithStaticMethod.staticMethod());// 'static method has been called.'
classStaticMethodCall(){staticstaticMethod(){return'Static method has been called';}staticanotherStaticMethod(){returnthis.staticMethod()+' from another static method';}}StaticMethodCall.staticMethod();// 'Static method has been called'StaticMethodCall.anotherStaticMethod();// 'Static method has been called from another static method'
classStaticMethodCall{constructor(){console.log(StaticMethodCall.staticMethod());// 'static method has been called.' console.log(this.constructor.staticMethod());// 'static method has been called.' }staticstaticMethod(){return'static method has been called.';}normalMethod(){console.log(StaticMethodCall.staticMethod());// 'static method has been called.' console.log(this.constructor.staticMethod());// 'static method has been called.' }}
static使用综合示例
这里重点关注子class中,是如何调用父class中的static的:extends和super。
下面的例子从3个方面解释了static的使用。
static方法在class中如何实现
拥有static成员的class可以被子class继承
static方法何时可以调用何时不可以调用
classTriple{statictriple(n=1){returnn*3;}}classBiggerTripleextendsTriple{statictriple(n){returnsuper.triple(n)*super.triple(n);}}console.log(Triple.triple());// 3console.log(Triple.triple(6));// 18vartp=newTriple();console.log(BiggerTriple.triple(3));// 81 不会被父class实例化影响console.log(tp.triple());// 'tp.triple is not a function'.
class在面向对象设计中非常有用,static关键字值得好好学习一下。
static关键字速览
语法
描述
static方法的调用只能通过class直接调用。
static方法不能被class的实例调用。
static方法通常用于创建utility函数。
static方法调用示例
class内部,static方法的调用分两种情况:static方法内部用this调用;非-static方法内部用
CLASSNAME.xxx
调用或者this.constructor.xxx
调用。this.staticMethod()
StaticMethodCall.staticMethod()
this.constructor.staticMethod()
class中的另一个static调用
class中的constructor和method调用
在非static方法内部,比如说constructor和prototype method内部,是无法通过this获取到static方法的。可以使用以下两种方式:
CLASSNAME.STATIC_METHOD_NAME()
this.constructor.STATIC_METHOD_NAME()
static使用综合示例
这里重点关注子class中,是如何调用父class中的static的:
extends和super
。下面的例子从3个方面解释了static的使用。
参考资料:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static
The text was updated successfully, but these errors were encountered: