modal.js中的匿名函数定义

时间:2015-03-18 22:04:49

标签: javascript

嘿伙计们我刚刚浏览了modal.js的scource并且有一些关于Javascript的问题以及modal.js插件中使用的编码约定,

Modal.js plugin

如果您看到line 76,请注意一致的函数是如何开始的:

this.backdrop(function () {

我是javascript的新手,我很少见到类似的东西,为什么不做以下事情:

(function () {

this.backdrop定义的地方我看到this.$backdrop已定义但未定义 this.backdrop

很明显,我有一个问题应该相对容易,但我只是想确认一下,即使我进行了一些测试,问题是这在使用原型时指出了什么。看下面的骨架代码:

+function ($) {
  'use strict';

  // MODAL CLASS DEFINITION
  // ======================

  var Modal = function (element, options) {

    this.options  w      = options
    this.$body          = $(document.body)
    this.$element       = $(element)
    this.$backdrop      =
    this.isShown        = null
    this.scrollbarWidth = 0

    if (this.options.remote) {
      this.$element
        .find('.modal-content')
        .load(this.options.remote, $.proxy(function () {
          this.$element.trigger('loaded.bs.modal')
        }, this))
    }
  }

  Modal.VERSION  = '3.3.2'

  Modal.TRANSITION_DURATION = 300
  Modal.BACKDROP_TRANSITION_DURATION = 150

  Modal.DEFAULTS = {
    backdrop: true,
    keyboard: true,
    show: true
  }

  Modal.prototype.checkScrollbar = function () {

  }

  Modal.prototype.setScrollbar = function () {

  }

  Modal.prototype.resetScrollbar = function () {

  }

  Modal.prototype.measureScrollbar = function () { 

  } 

}(jQuery);

这将指代内部所说的例如。 Modal.prototype.measureScrollbar ??莫代尔?或者modal.prototype.setScrollbar如果我在console.log这个我得到Object {options:Object,$ body:Object,$ element:Object,isShown:false,$ backdrop:null,scrollbarWidth:17,bodyIsOverflowing:false}但是为什么我不会得到Modal.prototype.setScrollbar,Modal.prototype.resetScrollbar,Modal.prototype.measureScrollbar,即使它们是Modal的一部分。

请注意,我的主要难点在于this.backdrop(function() { })

的编码惯例

我将不胜感激任何帮助。

谢谢。

亚历山大

1 个答案:

答案 0 :(得分:2)

  

为什么...... this.backdrop(function(){

因为backdrop函数需要回调(见下文)。

  

在哪里定义了this.backdrop我看到了。$ backdrop定义但不是this.backdrop?

它在第186行定义为原型的一部分:

Modal.prototype.backdrop = function

这意味着当实例化模态时(例如new Modal),创建的对象将具有backdrop函数。这就是JavaScript原型继承的工作原理。也许请查看这篇文章的简介:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain