jQuery:这个简单的代码片段是如何工作的(下拉列表)?

时间:2015-01-22 22:28:33

标签: javascript jquery drop-down-menu this

代码:

function DropDown(el) {
    this.dd = el;
    this.initEvents();
}
DropDown.prototype = {
    initEvents: function () {
        var obj = this;

        obj.dd.on('click', function (event) {
            $(this).toggleClass('active');
            event.stopPropagation();
        });
    }
}

$(function () {
    var dd = new DropDown($('#dd'));

    $(document).click(function () {
        // all dropdowns
        $('.wrapper-dropdown-2').removeClass('active');
    });
});

一般来说,到目前为止我所了解的是 (但我仍然想知道它是否真实):

  • var dd = new DropDown( $('#dd') );是自动执行功能(jQuery 样式)
  • var dd = new DropDown( $('#dd') );执行函数DropDown(el)
  • 在这种情况下,
  • el等于#dd
  • this.dd = el等于#dd.dd = #dd
  • this.initEvents()继承自函数的原型,因此可以由dd对象执行

问题:

  • 为什么var obj = this的目的是什么? (原型)
  • this指的是什么? (我想它已经保存了参考文献,所以它不是每次都被执行但我不知道那个原型this所指的是什么)
  • 为什么有obj.dd.on
    #dd.#dd.on?)
  • 如果函数继承了原型的比例,那么为什么它无法使用以下内容:obj.dd = el而不是this.dd

1 个答案:

答案 0 :(得分:0)

说实话,我们不需要保留这个。

首先这个(obj = this)引用Dropdown obj,而 this 在click事件中引用jquery obj $(' #dd')或obj.dd.

enter link description here