此代码适用于JSfiddle:https://jsfiddle.net/estevancarlos/w8yo3mp4/1/
let ScrollAnim = (function() {
console.log('ScrollAnim loaded');
this.init = function() {
console.log('init loaded');
};
this.getScenes = function() {
console.log('getScenes loaded');
};
return this;
})();
ScrollAnim.init();
ScrollAnim.getScenes();
但在我的实际项目http://veve.io/wip2中,无法正常工作。我收到错误:
Uncaught TypeError: Cannot set property 'init' of undefined
我不知道造成这种分化的原因。建议?
答案 0 :(得分:2)
首先,这是不模块模式。您正在使用您的函数污染全局上下文。
在jsfiddle上你没有使用严格模式。而你的IIFE正在window
上下文中被调用。您可以检查ScrollAnim
实际上是window
。 Demo
console.log(ScrollAnim === window); //true
您的所有项目正在使用'use strict';
,因此this
为undefined
。这又会导致错误。
这是模块模式;
let ScrollAnim = (function() {
console.log('ScrollAnim loaded');
return {
init: function() {
console.log('init loaded');
},
getScenes: function() {
console.log('getScenes loaded');
}
};
})();