2010-04-08 54 views
0

我對javascript很陌生,但承擔了一項任務,讓它更好用。但是,我遇到了jQuery的一些問題。以下JavaScript是第三方jQuery插件中的代碼,我希望能夠覆蓋funFunction()函數來執行我自己的實現。這是可能的,如果是這樣,我該怎麼做?我一直在做搜索的相當數量,並嘗試了一些方法來覆蓋使用的東西的功能等:在JavaScript中重寫深層功能

jQuery.blah.funFunction = function() { alert("like this"); }; 

主要代碼:

(function($) { 
    $.extend({ 
     blah: new function() { 
      this.construct = = function(settings) { 
       //Construct... stuff 
      }; 
      function funFunction() { 
      //Function I want to override 
      } 
     } 
    }); 
})(jQuery); 

對於那些有興趣進一步我想覆蓋tablesorter,以便用戶可以對列進行排序的唯一方法是按升序排列。

編輯:

存在使用WP-表,重裝上陣又使用這個插件WordPress的安裝。我不想改變這個插件的核心代碼,因爲如果有過更新的話,我將不得不確保我的前任知道我做了什麼。

我一直在編程很長一段時間,覺得我應該很容易能夠拿起JavaScript,同時也看着jQuery。我確切知道我需要爲此做什麼,而不是我如何覆蓋此功能。

+1

只是一個想法:如果你想熟悉Javascript,jQuery不是這種方式。先嚐試純Javascript。 – Abbas 2010-04-08 21:48:50

+0

你不能重寫那個......它是一個局部變量,並且只能在其定義的範圍內(以及在任何閉包中)使用。 – James 2010-04-08 21:50:53

+0

我會提出反對意見 - 如果你對編程一般都很熟悉,你應該能夠同時學習Javascript和jQuery,如果你保持概念清晰。只要記住jQuery *是* Javascript,並且它利用語言的靈活性來提供工具和功能。 – Pointy 2010-04-08 21:51:32

回答

2

有關的jQuery的好處是,如果一個插件並不完全做你想做什麼,你可以

  • 尋找另一個插件,做同樣的事情;
  • 抓住插件,如果它是GPL剛修好它

我的經驗是,大多數的插件是相當不錯的,但他們不是神靈這麼寫的,有時有問題,有時你所需要的只是發生與設計者的期望相悖。

現在:你真的應該認真思考一下你想做什麼以及你的需求是什麼,作爲一個新手,你會帶來什麼樣的關於「正確的做事方式」的假設派對。每個編程環境都有自己的個性,這往往幾乎是一個文化實體。事情可能看起來很奇怪,或者很糟糕,或者很醜陋,但作爲一個局外人,你應該暫停判斷,直到你習慣了所有的習語爲止。

+0

嘿,我感謝您的評論,我會在最後添加一些信息,以說明爲什麼我不想重寫插件。 – 2010-04-08 22:00:37

+1

@PintSizedCat - 無論您的偏好是什麼......不幸的是,在這種情況下,您無法編輯要編輯的內容,而無需執行以下操作:a)**插件內**或b)另一個插件,可能是你自己的。 – 2010-04-08 22:09:53

+0

好吧,我會離開它,因爲有人會發現一些奇妙的做法;) – 2010-04-08 22:17:15

0

誰會在意小型圖書館的更新呢?只要使用的版本能夠滿足需求並且沒有適用的錯誤,升級就沒有任何收益。

在任何情況下,我絕不會建議像這樣的字符串檢索可訪問的父函數:functionAsString=""+functionName編輯需要編輯的內容然後重新生成函數:functionName=eval("("+functionAsString+")")。但有可能這樣做。

當你將一個函數轉換爲字符串時,不同的瀏覽器會返回稍微不同的結果,但它們都是針對該函數的有效聲明,所以您應該能夠將這些差異表達出來。

或者,您可以使用ajax調用來檢索腳本文件,然後執行上述操作。我仍然不會推薦它。