Ошибка шаблона модуля: невозможно установить свойство undefined
Этот код работает в 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
Я не знаю, что вызывает эту дифференциацию. Предложения?
1 ответ
Прежде всего, это не шаблон модуля. Вы загрязняете глобальный контекст своими функциями.
В jsfiddle вы не используете строгий режим. И ваш IIFE вызывается в window
контекст. Вы можете проверить свои ScrollAnim
на самом деле window
, Демо
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');
}
};
})();