2013-04-18 51 views
0

有用於API對象的解決方法函數調用unsafeWindow對於不支持它(via this person's githubjQuery如何看起來既是對象又是對象調用的方法?

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本身是一個對象,並在這裏被調用,就像一個會方法。

編輯:感謝您的回答,我希望我能「檢查」所有人,感謝您的幫助!

回答

1

當你做$ = unsafeWindow.jQuery你正在分配的jQuery對象$像你正確指出。你沒有調用任何函數。在javascript中調用函數需要在末尾添加括號()

+0

,我想我看到了'.',認爲直「調用」就像其他語言一樣。但是,對於正確賦值給'$'的評論 - 這不僅僅是jQuery對象,對嗎?這裏發生了什麼,它看起來像一個對象(函數unsafeWindow)正在獲取名爲jQuery的屬性,那麼究竟是什麼被分配? – tempcode

+0

我認爲,他剛纔提到了一種訪問頁面jQuery對象的方法。我想你可以像你提到的那樣將它賦值給'$',或者你可以像使用'unsafeWindow.jQuery。(「#myDiv」)。hide();' – shishirmk

+0

right,但我想知道'jQuery'的屬性正在被函數對象'unsafeWindow'訪問(就像'object.something'獲取名爲'something'的屬性),現在我明白函數也是對象...如果這樣做沒有意義,那麼可以,但是謝謝所有你的信息/幫助到目前爲止! – tempcode

1

Jquery是附帶方法的構造函數。當用作$.each()時,您只需調用附加到函數(對象)的方法each()即可。當您使用$()時,它會調用內部new jQuery()並返回它,讓您可以訪問它的原型方法。

5

在JavaScript中,函數是對象!

2

不要讓.蒙上眼睛。 object.something越來越財產something它可以是任何東西(函數,變量,對象,值..),而object.something()是運用一種方法,在另一則留言中提到something

+0

你是對的我正在看''。這就是主要拋出我調用方法的概念 – tempcode

相關問題