Передача параметра как указатель в JavaScript

Проверка ограничений внешнего ключа занимает некоторое процессорное время, таким образом, некоторые люди опускают внешние ключи для получения некоторой дополнительной производительности.

6
задан Andreas Grech 3 December 2009 в 13:53
поделиться

3 ответа

Вы можете добиться желаемого эффекта, воспользовавшись тем фактом, что Javascript передает объекты по ссылке:

var o = { };

(function (p) {
    p.fn = function () {
        alert('test');
    };
})(o);

o.fn();
12
ответ дан 8 December 2019 в 14:43
поделиться

Лучше использовать язык по назначению, чем пытаться подогнать его под идиомы, которые имеют смысл только в языке, построенном в соответствии с другим набором принципов.

var o = (function(p) {
    return function() {
        alert('test');
    };
})();

o();
3
ответ дан 8 December 2019 в 14:43
поделиться

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

(function (p, name) {
    p[name] = function() {
       alert('test');
    };
})(window, "o");
o();

Это передает объект окна и имя вашей новой функции. Затем он назначает вашу функцию окну, и теперь оно доступно для вызова. Однако, если вы не собираетесь использовать замыкания, я бы предложил просто назначить функцию напрямую.

function o() {
    alert('test');
};
o();
1
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: