3

我的目标是创建一种“Javascript 库”,如果你可以这样称呼的话。我打算在浏览网页时使用它来操作页面,将其作为greasemonkey 脚本动态加载。这个想法是让 " win" 映射到window、 " doc" -> document、 " win.loc" ->win.location和其他一些方便的映射,但你明白了。你能给我几个例子让我从中学习语法,我会推断其余的?非常感谢。

4

2 回答 2

11

只需像这样分配变量:

var win = window;
var doc = document;

但是,在这种情况下,您无法在win.loc不修改window对象的情况下进行分配。另外,window 对象很特别,因为在分配之后win,您将能够使用win.winorwin.win.win等​​来获取它(window是全局对象。)

在任何情况下,您仍然可以分配locwindow对象:

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 新手,这不是一个好的项目。

于 2009-06-25T19:57:53.777 回答
0

**注意:**这实际上是要求澄清上面 Blixt 的答案,不适合一条评论。

好的,谢谢-这是一个很好的答案。我只想对它做一些澄清:

  • 如果我使用您上面给出的语法定义别名,win.loc是否会表现得与没有任何例外的情况完全相同?window.location(只要确定)

  • 我遵循了其中的大部分内容,但是具有Blixt我不理解的功能的部分。定义此函数的预期行为/结果是什么?

  • 我对 JS有点陌生 ,但为什么这不是一个好主意?它可能产生什么负面后果?我只是想为通过CTRL-单击另一个选项卡中的链接打开的选项卡做一些事情,没什么太复杂的。C-l javascript:win.loc=doc.ref<ENTER>

  • 说到这,我觉得这可能因浏览器而异,但有什么方法可以让我定义一个js:URI 方案并将其映射到那个方案javascript:?感谢您的出色回答。

于 2009-06-25T20:32:48.433 回答