如何向每个对象添加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你说得对。另外,由
对象创建的自定义对象。创建(空)
不会受到影响。谢谢!这正是我想要的:)