javascript对象方法可以是一个操作吗

can javascript object method be an action?

本文关键字:一个 操作 方法 对象 javascript      更新时间:2023-09-26

我对javascript对象有点困惑,比如说我在下面有DOM

<div class='of'></div>
<div class='of'></div>
<div class='of'></div>
<div class='of'></div>
 //select all of them 
  var fof = $('.of')

所以fof是一个有4个DOM对象的数组,对吧?我是否可以将fof视为javascript对象,并定义一些方法,如:

fof = {
  open:function(){
   }
 }

是否可以为fof定义一些"动作";就像click-dblclick一样,所以当"action"发生时(就像事件处理程序一样),调用一些方法!在稳定的硬编码

fof.click(function(){
})

我该怎么做?

好的,首先是基础知识。在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"

对不起,最后一个答案有点短。我认为您使用的是jquery
如果您的:

附加事件最好在文档准备部分完成,你也可以把它放进去。所以这就是一切的样子。

$(document).ready(function() {
    ($'.of').click(function () {
        $(this).do something or function($this) 
    });//end click
});//end ready

如果你想循环并对所有人做点什么。那。。。$('.of').each(function(){//做点什么});

不要太担心这里的匿名函数,只要确保使用它们即可。如果你想了解它们是什么,谷歌搜索"匿名函数"、"lamda表达式"或"函数编程"应该会让你忙碌一段时间。