2013-10-09 105 views
0

我通過查看其他人的代碼學習了開發,所以我對術語不太熟悉。最近我一直在我的書面方式JS/jQuery的是這樣的:這是什麼樣的模式?

$(document).ready(function() { 
    testingFunc.init(); 
}); 

var testingFunc = { 
    $object: $('#object'), 
    init: function() { 
     var _that = this; 
     console.log($object); 
    } 
} 

能有人告訴我,如果這是某種模式?或者有人可以告訴我如何描述我上面所做的代碼?

+2

這不是一個模式,它沒有名字。這只是正常的代碼。您創建了一個對象,並在DOM準備好時調用該對象的一個​​方法。儘管如此,爲了讓你的代碼工作,它必須在DOM上運行(因爲你試圖獲得對'$('#object')'的引用),所以使用'$(document).ready(function( ){'是不必要的。 –

+0

$(document).ready(function(){testingFunc.init();});'=>'$(testingFunc.init);' – rexcfnghk

+0

@FelixKling的快捷方式我的回答。 – plalx

回答

0

也許你可以將其命名爲Object Literal pattern,就像她在文章中使用的Rebecca Murphey一樣。不過,我認爲它並沒有被廣泛採用作爲這種代碼結構的正式名稱,但似乎是合適的。

0

第一部分是使用jQuery選擇器與偵聽器「ready」。這意味着一旦文檔(在這種情況下是瀏覽器窗口)準備就緒(Web方面,這意味着頁面完成加載時),選擇器和偵聽器所附帶的回調函數就會運行。

代碼的第二部分是按照一個標準的稱爲對象的文本,這是遵循鍵 - 的>我想你想知道的ready功能的原則值

0

一個JavaScript方法。爲了理解它是如何工作的,您必須知道,當您將HTML頁面加載到瀏覽器中時,HTML結構會變成一個名爲「DOM」(文檔對象模型)的JavaScript樹。在您的示例中,通過名爲document的變量引用DOM。爲了填充這個樹,每個標記都必須被初始化爲一個javascript對象。一旦完成這項工作,就會引發「就緒」事件,調用與其綁定的每個函數。總結:

$(document).ready(function() { testingFunc.init(); }); 
// translation : Once the DOM has been initialized, call "init". 

關於你的代碼,$('#object')試圖查詢DOM樹找到與設置爲「對象」(如<div id="object">)的ID的節點。但是,該文檔可能尚未完全初始化。結果,這個查詢可能會失敗。爲了避免這種風險,你應該寧可這樣做:

var testingFunc = { 
    $object: null, 
    init: function() { 
     this.$object = $('#object'); 
     console.log(this.$object); 
    } 
} 

你可以把DOM作爲一個文件夾結構,每個文件夾和文件是一個HTML標記。 jQuery以與瀏覽文件資源管理器相同的方式瀏覽DOM樹。

1

代碼中表示的這種特定樣式是「對象文字」模式。它與「模塊」模式僅略有不同,因爲您發現自己不需要特定的屬性或方法爲專用模式。

在進入術語陷阱之前,您可能需要理解(原則上)JavaScript模式是什麼,然後確定可能在架構上最適合您的項目的模式。

你可能會從這種迷你本書從阿迪·奧斯馬尼的深入理解:從他

http://addyosmani.com/resources/essentialjsdesignpatterns/book/

和高層次的文章:

http://addyosmani.com/largescalejavascript/