2013-03-22 65 views
1
//1 
var object1 = function(o){ 

    // some code 

}; 

//2 
var object2 = new object1({ 

    method1: //some code 
    method2: //some code 
    method3: //some code 

}); 

//3 


document.onkeydown=function(e){  
    var eventKey = e.keyCode || e.charCode; 
    var sel = Coverflow.selected; 
    if(eventKey == 39 || eventKey == 37) { 
     if(eventKey == 39) sel++; 
     else if(eventKey == 37) sel--; 
     sel = sel.limit(0, Coverflow.getListLength() - 1); 
     Coverflow.select(sel); 
    } 
} 

好,我的問題是:這個javascript代碼是如何工作的?

  1. 時創建object1發生了什麼,什麼是=()函數的部分是什麼意思?
  2. 是指向object1的object2。是創建繼承的分配?
  3. 如果可能的話可以有人解釋document.onkeydown()中發生了什麼。該代碼是用於覆蓋流效果。這個函數還沒有在程序的其他地方被調用,那麼它是如何被執行的?

謝謝

回答

2

時創建object1會發生什麼,什麼是=()函數的部分是什麼意思?

JavaScript中的函數是第一類對象。它們可以像任何其他功能一樣被傳遞和分配。

object2是否指向object1?該作業是否創建繼承?

編號object2是對象1的實例。這就像將object1視爲類定義一樣。

document.onkeydown如何得到執行?

當按下某個鍵時,會觸發一個事件。文檔對象中的代碼(由瀏覽器提供)監聽該事件並調用該函數(如果存在)。

MDN has some documentation on how events work如果你想了解更多的細節。

+0

使用1和2語句使對象變爲像var obj = {method1:。 ..} – user2132383 2013-03-22 16:09:41

+0

object1是一個函數,而不是一個普通的對象 – Quentin 2013-03-22 16:12:11

+0

object2從object1繼承屬性以及函數對新對象的任何操作 – Quentin 2013-03-22 16:12:42

0

1 - 其名爲object1的函數,在運行時定義,更here

2 - 與傳遞給它(如在函數聲明 'O' 標記)的參數的函數新實例

3 - 函數綁定到onkeydown事件,因此每次在文檔上按下鍵時都會執行它,更多信息here

+0

嚴格地說,2應該讀取「...帶*參數*傳遞給它。 – 2013-03-22 12:59:00

+0

@甜菜根 - 甜菜根,你當然是對的,糾正起來:) – Gatekeeper 2013-03-22 13:06:47

0

JavaScript沒有類的概念,但可能具有類似的行爲。所以我會調用可能是實例化類的對象/函數。

  1. object1是某種形式的構造函數定義的類,function(){...}部分是類的構造函數。
  2. object2是對object1類的實例的引用,它通過調用object1類的構造函數實例化,該類帶有1個參數,該參數本身就是一個對象。
  3. onkeydown是​​事件處理程序的DOM對象的保留屬性。一旦這個事件被瀏覽器觸發,它被相關函數處理(如果它存在的話)