Javascript oop基础知识

时间:2012-05-21 22:45:34

标签: javascript jquery

  

可能重复:
  $(document).ready shorthand

有人可以帮我理解下面的JS代码,请:

$(function(){  <-- Is this a JS constructor? Why we need this?
    var someVariable = $(".classa").on('click', function() { <-- At what point in time does someVariable get populated?
        var $this = $(this);
            id = $this.attr('id');
         someVariable.removeClass('selected'); 
    });

    var someVariable2 = $(".classb").on('click', function() {
        var $this = $(this);
            id = $this.attr('id');
         someVariable2.removeClass('selected');
    });
});

2 个答案:

答案 0 :(得分:2)

$是函数的名称。你在其中传递一个匿名函数作为它的第一个参数。如果我们要减少它的复杂性,它将如下所示:

var $ = function( arg1 ){
  /* Internals */
};

如果我们现在打电话给它,它将如下所示:

$("foo");

在此代码中,"foo"是我们的第一个参数。现在假设我们用另一个函数替换了"foo"

var callback = function(){
  alert("Hello World");
};

如果我们将其传递到我们的$函数中,它将如下所示:

$( callback );

但我们真的不需要使用命名函数,我们可以使用匿名函数:

$(function(){
  alert("Hello World");
});

开始看到相似之处?在$的生命中的某个时刻,它将决定它将执行我们传入的函数。在执行它之前,我们的函数什么都不做。

现在我们在这里讨论jQuery,只要DOM准备就绪,jQuery就会执行该函数。所以我们传递的代码应该在DOM准备就绪时执行。

答案 1 :(得分:0)

$不是js构造函数..它是jquery(js library)函数。变量将在声明中填充。