静态方法有什么好处?

阿夫拉姆·马夫里迪斯(Avraam Mavridis)

我正在使用Webstorm并编写了一个React组件,我的代码如下所示:

async onDrop( banner, e ) {
    banner.classList.remove( 'dragover' );
    e.preventDefault();

    const file = e.dataTransfer.files[ 0 ], reader = new FileReader();
    const { dispatch } = this.props;

    const result = await this.readFile( file, reader );

    banner.style.background = `url( ${ result } ) no-repeat center`;
    dispatch( addLayer( file ) );

    return false;
}


@isImage( 0 )
readFile( file, reader ) {
    reader.readAsDataURL( file );

    return new Promise( function ( resolve, reject ) {
        reader.onload = ( event ) => resolve( event.target.result );
        reader.onerror = reject;
    } );
}


onDragOver( banner ) {
    banner.classList.add( 'dragover' );
    return false;
}

Webstorm的代码检查向我建议Method can be static了该onDragOver方法。我的问题是:

将方法作为静态方法有什么真正的好处,或者这种建议毫无用处?

马达拉的幽灵

是的,调用静态函数时不需要对象的实例。您所需要的只是对构造函数的引用:

class Foo {
  static bar() { console.log("foo"); }
}

Foo.bar(); // outputs "foo" to console

无需在new Foo()任何地方。

按照约定,当您实际需要实例的状态(读取状态或写入状态)时,应使用实例方法。

检查将告诉您,当您拥有其中没有原型this(因此不需要实例)的原型/类方法时

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章