jQuery如何看似既是对象又是对象调用的方法?

时间:2013-04-18 23:34:59

标签: javascript jquery

对于不支持它的浏览器(unsafeWindow),有一个名为via this person's github的API对象的解决方法函数

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 个答案:

答案 0 :(得分:5)

在javascript中,函数是对象!

答案 1 :(得分:2)

不要让.蒙上眼睛。 object.something获取属性something,可以是任何内容(函数,变量,对象,值..),而object.something()正在应用方法something

答案 2 :(得分:1)

执行$ = unsafeWindow.jQuery时,您正在将jQuery对象分配给$,就像您正确指出的那样。您没有调用任何函数。在javascript中调用函数涉及在末尾添加括号()

答案 3 :(得分:1)

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