JavaScript: различные конструкторы для одного и того же типа объекта - PullRequest
6 голосов
/ 07 февраля 2011

возможно ли иметь более одного конструктора для класса в javascript?то есть один с нулевыми параметрами, один с одним, один с двумя и т. д ...

если да, то как?

спасибо!

Ответы [ 2 ]

8 голосов
/ 07 февраля 2011

Нет, Javascript не поддерживает перегрузку функций.

Однако внутри каждой функции у вас есть доступ к arguments объекту , который содержит все аргументы, предоставленные функции, объявленные или нет. Вы можете просто посмотреть на это и решить, что именно вы хотите сделать в своем конструкторе.

Плохой, неопределенный пример:

function Foo() {

    function singleParamConstructor(foo) {
        ...
    }
    function twoParamConstructor(foo, bar) {
        ...
    }

    switch (arguments.length) {
        case 1 :
            singleParamConstructor(arguments[0]);
            break;
        case 2 :
            twoParamConstructor(arguments[0], arguments[1]);
            break;
        ...
    }
}
1 голос
/ 07 февраля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...