我的目标是创建一种“Javascript库”,如果你可以这样称呼的话。我打算在浏览网页时使用它来操作页面,动态加载它作为greasemonkey脚本。我们的想法是将“win
”映射到window
,“doc
” - > document
,“win.loc
” - > win.location
,以及其他一些便利映射,但你明白了。你能给我一些例子让我从中获取语法,我会推断其余的吗?非常感谢。
答案 0 :(得分:11)
只需分配如下变量:
var win = window;
var doc = document;
但是,在这种情况下,如果不修改win.loc
对象,则无法分配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,那么这不是一个好的项目。
答案 1 :(得分:0)
**注意:**这实际上是要求澄清上面的Blixt答案,这不符合一条评论。
好的,谢谢 - 这是一个非常好的答案。我想对此作一些澄清:
如果我使用您在上面给出的语法定义别名,win.loc
的行为与window.location
完全相同,没有任何例外情况? (只是确定)
我跟着大部分内容,但是Blixt
函数的部分我不明白。定义此函数的预期行为/结果是什么?
我是 有点 JS的新手,但为什么这不是一个好主意?它可能带来什么负面后果?我只是想对C-l javascript:win.loc=doc.ref<ENTER>
这样的事情进行操作,以便通过CTRL点击另一个标签中的链接打开一个标签,没有太复杂。
说到这一点,我觉得这可能与浏览器不同,但有没有办法让我定义一个js:
URI方案并将其映射到{{1一个?谢谢你的回答。