2012-07-19 52 views
0

爲了優化性能,我使用單個JavaScript文件處理我正在處理的所有網頁。 我使用的基本結構如下:在JavaScript中使用單實例函數的原型

(function($) { 

    // Shared functions ... 

    // A function for every page 
    function Page1() { 
    } 
    Page1.prototype = { 
     init: function() { 
      //... 
     }, 
     //more functions 
    }; 

    // more pages 

    $(document).ready(function() { 
     if ($('#page1uniqueidentifier').length) { 
      var page1 = new Page1(); 
      page1.init(); 
     } 
     // more pages 
    } 
}) (jQuery); 

我不是一個有經驗的JavaScript程序員,所以我一直在尋找了很多最佳實踐和構建我的代碼不同的方式和我已經結束選擇了這一個,但我真的不知道這件事,我有幾個問題:

  1. 是否值得使用的原型,如果我永遠不會有一個多頁的單個實例?我想我理解原型是如何工作的,而且我沒有在那裏獲得任何表現。但是我將它當作最佳實踐來使用,因爲在不同實例存在的情況下,這些函數在每個實例中都是相同的。

  2. 有沒有更好的方法來構造代碼?

  3. 我應該把init函數的調用放在構造函數中,然後只調用新的Page1()?

    function Page1() { 
        this.init(); 
    } 
    
    if ($('#page1uniqueidentifier').length) { 
        new Page1(); 
    } 
    

回答

0

爲了優化性能我使用一個JavaScript文件 處理上

這是沒有意義的網站,我工作的所有頁面。你應該把代碼分離成文件,然後運行你所有的js文件到minimizer/concatenator來打包它。

總之,要回答你的問題,

  1. 如果你只打算有1,則原型不會買任何東西。但是,如果您打算使用1以上,您會回去改變它嗎?另外,使用原型也不會傷害你,所以你不妨去學習。
  2. 您應根據實現的功能創建有意義的文件。例如,我會將您的對象定義分離到它自己的文件中,因此當您查看該文件時,您看到的只是該對象的代碼。
  3. 如果你有一個構造函數,你真的不需要init,是嗎?
+0

好的,謝謝你的回答。關於使用單個文件,這並不完全如此,因爲我們爲外部腳本和不同模塊分別提供了文件。但是我們可以爲每個網站模塊處理所有自定義代碼,每個網站模塊可以有多個頁面。 無論如何,即使我將代碼分離到不同的文件中,並在稍後將它連接起來,我應該控制第2頁代碼不會在第1頁中執行正確嗎? 關於構造函數,由於初始化代碼通常非常廣泛,所以我將它放在原型中,以便它不會被重複用於每個實例。 – 2012-07-19 14:21:05

相關問題