2011-04-06 52 views
0

我創建了一個新的js函數像這樣構建js函數

Object.prototype.testFn = function(){ 
    s=this; 
    alert(s); 
    } 
a='word';   
a.testFn(); 

i'ts工作爲好,但是,當我使用jQuery的SDK,然後我打電話jQuery的活,我testFn功能被重複調用。有時,整個腳本不工作...

+1

解決方法很簡單:不要擴展Object.prototype。它打破了jQuery,並且是不好的風格。 – 2011-04-06 09:24:27

+0

@Felix Kling:所以,如何在jQuery sdk中構建js函數? – theHack 2011-04-06 09:27:05

+0

難道你不能用'function testFn(){}'創建一個全局函數嗎? – vhallac 2011-04-06 09:29:31

回答

1

正如在我的評論中所說,延長Object.prototypeis a bad idea。它很可能會打破其他圖書館。

當您使用jQuery時,沒有特別的方法來定義函數。很簡單,就是:

function myFunction(obj) { 
    // manipulate obj 
} 

但正如你提到的jQuery,mayby要創建一個插件,其基本結構是:

jQuery.fn.myPlugin = function() { 

    // Do your awesome plugin stuff here 

}; 

必須擴展jQuery.fn

如何創建插件在Plugins/Authoring教程中有很好的解釋。

+0

此函數的'this'是指DOM對象,並且該對象必須是jQuery對象,與上面的函數不同,'this'將字符串''指向字符串 – theHack 2011-04-06 09:39:03

+0

如果您使用jQuery並且想要定義您的自己的函數以某種方式操縱DOM對象,我絕對推薦如上所述擴展jQuery。您從Sizzle(jQuery的選擇器引擎)和其他jQuery特權中獲得所有好處。 – EMMERICH 2011-04-06 09:42:20

+0

@EMMERICH:當對象不是DOM對象時,我應該怎麼做,我的'a'對象是一個字符串,我想操縱這個字符串... – theHack 2011-04-06 09:47:05