javascript - jQuery 可以使用某种模块模式吗?

标签 javascript jquery

我在 someFile.js 中看到了这段代码:

var someObject = {};

someObject.doWork = function(){
  var innerFunction = function() {
    console.log('innerFunction has been called');
  }

  innerFunction();
}

$(someObject.doWork);

此代码是属于 durandal 项目的 bundle 的一部分。这是某种模块模式吗?看起来 jQuery 正在被用来调用一个函数。

是否有任何理由在更常见的 IIFE 上执行此操作?

someObject.doWork = (function(){
  var innerFunction = function() {
    console.log('innerFunction has been called');
  }

  innerFunction();
})();

需要明确的是,在实际代码中,someObject 位于全局命名空间中。

最佳答案

无法收集使用该特定模式的理由。 .doWork() 不返回值,也不返回原始对象。 $(someObject) 未定义为变量;至少在问题处的 javascript 处。

将对象传递给 jQuery() 的原因是要利用对象上的 jQuery 方法,其中 this[0] 是位于某个位置的原始对象。打回来;例如,

$(someObject).animate({someObject.property:someObject.property})

参见Make a rotate animation: start and end slowly, but fast in the middle

关于javascript - jQuery 可以使用某种模块模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028073/

相关文章:

javascript - 不存在的 XML 节点破坏了我的脚本

javascript - Vue-组件发射

javascript - 从 javascript 函数调用 jquery

javascript - 如何找到哪一行添加了某个js事件处理程序?

javascript - 为什么在有效索引位置删除时 splice 方法返回 undefined?

javascript - 为什么我的 Javascript 动画会在一段时间后变慢

javascript - 使用城邦 ruby gem 选择 onchange

javascript - 内部带有自定义组件的 TouchableWithoutFeedback 不会触发 onPress 回调

javascript - body 保持定位时水平滚动固定的 div

javascript - 当我们拖动并创建事件时调用函数,Jquery完整日历