Псевдонимы Javascript - PullRequest
       10

Псевдонимы Javascript

3 голосов
/ 25 июня 2009

Моя цель - создать что-то вроде "библиотеки Javascript", если можно так назвать. Я собираюсь использовать его, чтобы просто манипулировать страницами во время просмотра веб-страниц, динамически загружая его как скрипт greasemonkey. Идея состоит в том, чтобы сопоставить "win" с window, "doc" -> document, "win.loc" -> win.location и несколькими другими удобными отображениями, но вы получите идея. Можете ли вы дать мне несколько примеров, чтобы я мог подобрать синтаксис, а я экстраполирую остальные? Большое спасибо.

Ответы [ 2 ]

11 голосов
/ 25 июня 2009

Просто присвойте переменные следующим образом:

var win = window;
var doc = document;

Вы не можете назначить win.loc без изменения объекта window в этом случае. Кроме того, объект window является особенным, потому что после назначения win вы сможете получить его с помощью win.win или win.win.win и т. Д. (window является глобальным объектом).

В любом случае, вы можете по-прежнему назначать loc объекту window:

win.loc = window.location;

// Can now be referenced as:
loc; // (window is the global object)
win.loc;
win.location;
window.location;

Теперь это как сделать то, что вы просите. Скорее всего, вы не должны делать это. Обычно фреймворки определены для использования только одной глобальной переменной с подходящим именем:

var Blixt = (function () {
    var localVariable = 123;

    return {
        loc: window.location,
        myFunc: function () {
            alert(localVariable);
        }
    };
})();

Все это довольно сложная штука, если вы не знакомы с JavaScript, поэтому не стоит начинать проект, если вы новичок в JavaScript.

0 голосов
/ 26 июня 2009

** ПРИМЕЧАНИЕ: ** Это действительно запрос на уточнение ответа Blixt выше, который не вписывается в один комментарий.

Хорошо, спасибо - это довольно хороший ответ. Я просто хотел бы дать некоторые разъяснения:

  • Если я определю псевдонимы, используя приведенный выше синтаксис, win.loc будет вести себя точно так же, как window.location без каких-либо исключений? (Просто убедившись)

  • Я следовал большей части этого, но часть с функцией Blixt я не понял. Каково ожидаемое поведение / результат определения этой функции?

  • Я Я вроде новичок в JS, но почему это не очень хорошая идея? Какие негативные последствия это может иметь? Я просто хочу сделать что-то вроде C-l javascript:win.loc=doc.ref<ENTER> для вкладки, которая была открыта нажатием CTRL по ссылке на другой вкладке, ничего сложного.

  • Говоря о том, что, и у меня есть ощущение, что это может отличаться от браузера к браузеру, но есть ли какой-нибудь способ для меня определить схему js: URI и сопоставить ее с javascript:? Спасибо за отличный ответ.

...