如何向每个对象添加Javascript函数?
我想知道如何为页面上的每个对象附加一个可用的函数。我知道我可以这样做:如何向每个对象添加Javascript函数?,javascript,jquery,Javascript,Jquery,我想知道如何为页面上的每个对象附加一个可用的函数。我知道我可以这样做: mything = { init: function(SELECTOR){ }, destroy: function(){ } }; 但我只能通过以下方式使用它:mything.init(选择器) 我想要的是能够以这种方式做同样的事情: $('.mydiv, input, whatever').myFunction({ 'my' : 'arg', 'my2' : 'arg2' }); $
mything = {
init: function(SELECTOR){
},
destroy: function(){
}
};
但我只能通过以下方式使用它:mything.init(选择器)代码>
我想要的是能够以这种方式做同样的事情:
$('.mydiv, input, whatever').myFunction({ 'my' : 'arg', 'my2' : 'arg2' });
$('.mydiv').myFunction('destroy');
我知道有很多Javascript教程,但我不知道如何搜索这种类型的功能。任何帮助都将不胜感激 在您的例子中,似乎只需要扩展jQuery.prototype
jQuery.extend( jQuery.fn, mything );
然而,当然,即使不是很值得推荐,也有可能去最终的根并扩展对象.prototype
。这确实会将这些函数添加到每个对象中。这不一定是一个好主意(这是一个糟糕的主意),但您可以通过原型实现这一点:
Object.prototype.myFunction = function() {
console.log('Called myFunction');
};
您可以看到任意对象的情况:
document.myFunction();
请注意,添加到非您自己的类的原型(尤其是属于非您自己的库的内置对象或类)可能会导致很多混乱。这就是为什么谷歌有自己的风格指南的原因之一(尽管有很多诱惑将String.startsWith、String.endsWith和许多其他有用的操作添加到内置类型中)。实现您所描述的功能的干净方法是将代码封装在jQuery插件中
这是官员。通读一遍,其实很容易理解
关于包装函数(以便$(选择器).myFunction()
调用init
,$(选择器).myFunction('doThis')
调用doThis
,等等)的部分是。您似乎不想扩展每个对象(一个疯狂的想法)。您似乎只想扩展jQuery对象(一个好主意)。这是一个非常重要的区别,你说得对!为我的错误道歉。第一个函数看起来像一个自定义选择器。可以扩展选择器,该选择器也可以用于包含您自己的自定义构建选择逻辑谢谢!这就是我要找的:)我只是想知道在哪里可以找到更多的信息,现在我知道我应该寻找原型
。它会将它添加到几乎任何对象中。对象不需要将对象作为原型。例如,IE9中的控制台没有对象,因为它是prototype@RuneFS你说得对。另外,由对象创建的自定义对象。创建(空)
不会受到影响。谢谢!这正是我想要的:)