Чем отличается статический метод от экспортируемого нового экземпляра класса? - PullRequest
0 голосов
/ 23 мая 2018

Имея эти 2 фрагмента кода.в чем разница между ними и в каком случае вы предпочитаете один другому?

export default class A {
    static methodA() {
        console.log('Method A');
    }
}

со следующим использованием:

import A from 'a';

function test() {
    A.methodA()
}

VS этот второй фрагмент:

class A {
    methodA() {
        console.log('Method A');
    }
}

export default new A();

со следующим использованием:

import A from 'a';//I know that semantically I should have import a - but for the sake of this question I wrote import A.

function test() {
    A.methodA();
}

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Второй случай - это так называемый одноэлементный шаблон , в котором вы определяете класс, который будет иметь только один экземпляр.Какой из них вы предпочитаете, зависит в основном от вашего варианта использования и личного вкуса.Если вас интересует более подробная информация, я бы порекомендовал вам ознакомиться с синглетонами и шаблонами проектирования в целом.

0 голосов
/ 23 мая 2018

Не очень на самом деле.Даже class является объектом, поэтому в одном случае у вас есть объект, у которого есть свойство methodA, которое является функцией, а в другом случае у вас есть объект, у которого есть свойство methodA, которое является функцией.

Единственная разница в том, что вы можете сделать new A, когда A является классом, но вы не можете, когда это уже экземпляр.

...