Использование пустой функции в Javascript - PullRequest
5 голосов
/ 05 апреля 2011

Я пытаюсь понять сторонний код Javascript.Но я не могу понять, в чем смысл использования приведенного ниже стиля кодирования.

 function A(){
    }
A.Prop = '23';
A.generate = function(n){
   // do something
}

А затем он просто используется как:

A.generate(name);

Может кто-нибудь объяснить, что это за кодделает.Я немного понимаю OO Javascript, но мне интересно, если это какая-то другая форма расширения объекта с новыми свойствами к нему.Хотя я не вижу ни одного «нового» ключевого слова, используемого для создания объекта.

Есть идеи?

Спасибо,

Ответы [ 3 ]

7 голосов
/ 05 апреля 2011

Они создают пространство имен.Есть много способов сделать это, и все они более или менее эквивалентны:

A = {
    Prop : '23',
    generate : function (n) {
        // do something
    }
};

Или, что эквивалентно:

A = { };
A.Prop = '23';
A.generate = function (n) {
    // do something
};

Также, если вам нравится быть многословным:

A = new Object();
A.Prop = '23';
A.generate = function (n) {
    // do something
};

function обычно используется для обозначения «класса», а не «пространства имен», например:

A = (function () {
    var propValue = '23';    // class local variable
    return {
        "Prop" : propValue,
        "generate" : function (n) {
            // do something
        }
    };
})();
// then I can use A in the same way as before:
A.generate(name);
4 голосов
/ 05 апреля 2011

Похоже, они используют фиктивную функцию для создания пространства имен.

Вы правы;это бесполезно.
Вместо этого они должны использовать обычный объект.

0 голосов
/ 05 апреля 2011

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

Кроме того, идентификаторы, начинающиеся с заглавной буквы, по соглашению зарезервированы для конструкторов (если только они не являются заглавными буквами, которыеусловно для констант), поэтому используйте имя, начинающееся с буквы нижнего регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...