2016-06-23 10 views
0

のプロパティを設定することはできません。このコードは、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

http://stackoverflow.com/questions/762011/let-keyword-vs-var-keyword letとvarの違いを確認してください –

答えて

1

まず、これはではなく、のモジュールパターンです。あなたはあなたの職務とグローバルな状況を汚染しています。

jsfiddleでは厳密モードは使用していません。そして、あなたのIIFEはwindowという文脈で呼ばれています。ご確認のScrollAnimは、実際にはwindowです。 Demo

console.log(ScrollAnim === window); //true

あなたactuallプロジェクトがundefinedするthisで結果'use strict';を使用しています。これがエラーの原因となります。

これはモジュールパターンです。

let ScrollAnim = (function() { 
    console.log('ScrollAnim loaded'); 

    return { 
     init: function() { 
     console.log('init loaded'); 
     }, 

     getScenes: function() { 
     console.log('getScenes loaded'); 
     } 
    }; 
})();