Напишите функцию пространства имен для jQuery, которая работает с параметрами, а не с селекторами - PullRequest
1 голос
/ 08 ноября 2011

Я пытался запустить библиотеку функций в jQuery для трансверсального использования в моем коде
Я подумал, что хорошим способом сделать это было бы создание пространства имен jQuery и добавление моих
методов под этим(и предоставьте пространство имен для всех, кто хотел бы внести свой вклад).
Это то, что я придумал:

(function( $ )
{
    $.extend
    ({
        mynamespace:
        {
            myfunction: function(a, b)
            {
                if (!Math.prototype.newmethod)
                {
                    Math.prototype.newmethod = function(c, d)
                    {
                        // newmethod code
                    }
                }
                // myfunction code (uses Math.newmethod)
            }
        }
    })
})(jQuery);

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

DOM Exception:
INVALID_CHARACTER_ERR (5)

Я проигнорировал это, не зная, откуда он исходит и как его исправить (несколько ссылок, которые я нашел в Интернете, связывали проблему с IE9, которой я не пользовался), но когда я использовал свой новый код для всего сайта, все началосьразрыв с сообщениями об ошибках, такими как

Uncaught TypeError: undefined не является функцией

и

Uncaught TypeError: Object function (c, d) {// newmethod code}

Любые идеи относительно того, что я делаю неправильно, приветствуются

PS
То, как явызовите код, описанный выше:

var temp = $.mynamespace.myfunction(a, b);    
...