我在 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/