我创建了一个新的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