2011-04-06 48 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