Javascript别名

时间:2009-06-25 19:53:07

标签: javascript greasemonkey

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

2 个答案:

答案 0 :(得分:11)

只需分配如下变量:

var win = window;
var doc = document;

但是,在这种情况下,如果不修改win.loc对象,则无法分配window。此外,窗口对象是特殊的,因为在分配win之后,您将能够使用win.winwin.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,那么这不是一个好的项目。

答案 1 :(得分:0)

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

好的,谢谢 - 这是一个非常好的答案。我想对此作一些澄清:

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

  • 我跟着大部分内容,但是Blixt函数的部分我不明白。定义此函数的预期行为/结果是什么?

  • 有点 JS的新手,但为什么这不是一个好主意?它可能带来什么负面后果?我只是想对C-l javascript:win.loc=doc.ref<ENTER>这样的事情进行操作,以便通过CTRL点击另一个标签中的链接打开一个标签,没有太复杂。

  • 说到这一点,我觉得这可能与浏览器不同,但有没有办法让我定义一个js: URI方案并将其映射到{{1一个?谢谢你的回答。