我創建了一個新的js函數像這樣構建js函數
Object.prototype.testFn = function(){
s=this;
alert(s);
}
a='word';
a.testFn();
i'ts工作爲好,但是,當我使用jQuery的SDK,然後我打電話jQuery的活,我testFn功能被重複調用。有時,整個腳本不工作...
我創建了一個新的js函數像這樣構建js函數
Object.prototype.testFn = function(){
s=this;
alert(s);
}
a='word';
a.testFn();
i'ts工作爲好,但是,當我使用jQuery的SDK,然後我打電話jQuery的活,我testFn功能被重複調用。有時,整個腳本不工作...
正如在我的評論中所說,延長Object.prototype
is 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教程中有很好的解釋。
此函數的'this'是指DOM對象,並且該對象必須是jQuery對象,與上面的函數不同,'this'將字符串''指向字符串 – theHack 2011-04-06 09:39:03
如果您使用jQuery並且想要定義您的自己的函數以某種方式操縱DOM對象,我絕對推薦如上所述擴展jQuery。您從Sizzle(jQuery的選擇器引擎)和其他jQuery特權中獲得所有好處。 – EMMERICH 2011-04-06 09:42:20
@EMMERICH:當對象不是DOM對象時,我應該怎麼做,我的'a'對象是一個字符串,我想操縱這個字符串... – theHack 2011-04-06 09:47:05
解決方法很簡單:不要擴展Object.prototype。它打破了jQuery,並且是不好的風格。 – 2011-04-06 09:24:27
@Felix Kling:所以,如何在jQuery sdk中構建js函數? – theHack 2011-04-06 09:27:05
難道你不能用'function testFn(){}'創建一個全局函數嗎? – vhallac 2011-04-06 09:29:31