好的,首先是基础知识。在 Javascript 中,函数是第一类对象。这意味着您可以执行以下操作:
var foo = function() { return 1 + 1;};
你可以这样做:
var foo = 5;
在 Javascript 中,所有真正的对象(几乎除了原语之外的所有对象)都具有属性。这些属性可以设置为可以将变量设置为的任何内容:
var foo = {};
foo.bar = function() { return 1 + 1; }
foo.baz = 5;
每当您看到在对象上使用的方法时,您只是看到设置为正在运行的属性的函数。
由于 jQuery 结果对象(例如$('.of')
)不仅仅是一个数组,它是一个 Javascript 对象,它可以具有属性,而这些属性可以是函数。所以你绝对可以这样做:
var fof = $('.of')
fof.foo = function() { return 1 + 1; };
fof.foo();
最后,您询问了如何制作自己的类似 jQuery 的事件。使用 jQuery 很容易做到这一点。这是一个简单的例子:
var fakeObject = {};
fakeObject.fakeMethod = function() {
// do something
$.trigger(this, 'myFakeClick');
}
var fakeObjectWatcher = {}
fakeObjectWatcher.react = function() { alert('someone did something'); };
$(fakeObject).on('myFakeClick', fakeObjectWatcher.react);
fakeObject.fakeMethod(); // triggers myFakeClick event
// fakeObjectWatcher will now alert "someone did something"