0

unsafeWindow有一个针对不支持它的浏览器调用的 API 对象的变通方法(通过此人的 github

var unsafeWindow = (function() {
    var e1 = document.createElement('p')
    e1.setAttribute('onclick', 'return window;');
    return e1.onclick();
})();

// If the current document uses a JavaScript library, you can use it in
// your user script like this:
console.log(unsafeWindow.jQuery);

如果unsafeWindow是一个对象(或者在这种情况下是一个旨在模仿对象的函数),它怎么能像这样使用$ = unsafeWindow.jQuery?我知道这是您将函数映射到$而不是$简单的 jQuery 别名的方式,但我只是对为什么感到困惑,因为我认为jQuery它本身是一个对象,并且在这里被调用,就像一个方法一样。

编辑:感谢您的回答,我希望我能“勾选”你们所有人,感谢您的帮助!

4

4 回答 4

5

在 javascript 中,函数是对象!

于 2013-04-18T23:41:55.237 回答
2

不要让.眼罩蒙住你。object.something正在获取something可以是任何东西(函数、变量、对象、值..)的属性,同时object.something()正在应用该方法something

于 2013-04-18T23:45:57.177 回答
1

当您这样做时,$ = unsafeWindow.jQuery您将 jQuery 对象分配给 $ 就像您正确指出的那样。您没有调用任何函数。在 javascript 中调用函数需要()在末尾添加一个括号。

于 2013-04-18T23:41:27.193 回答
1

Jquery 是一个带有附加方法的构造函数。当用作 时$.each(),您只是调用each()附加到函数(对象)的方法。当你使用$()时,它会调用一个 internalnew jQuery()并返回它,让你可以访问它的原型方法。

于 2013-04-18T23:41:49.140 回答