2016-04-06 30 views
0

bir işlev değil https://jsfiddle.net/MillerDev/5qmnqr6q/Ben bu hatayı</p> <p><code>Uncaught TypeError: dM.getResources is not a function</code></p> <p>Fiddle alıyorum ve neden anlamıyorum JavaScript bazı anonim işlev IFFE eşyalarını kod çalışıyordu

Neden oluyor?

reportGroupDataManager (normal olarak bu reportGroupDataManager.js dosyası)

var reportGroupDataManager = (function() { 
    var self = this; 
    // cannot do this below as dM.getResources is not a function 
    //self.getResources = "blah"; 

    self.getResources = function() { 
    return object; 
    // return ajaxHelper.get(actions.adminReports.getResourceFileUrl, {}); 
    }; 

    console.log('reportGroupDataManager'); 

    return self; 
}); 

veri (şu anda yer tutucu)

function data() { 
    console.log('in data'); 
} 

IFFE

(function(jQ, dM, data) { 
    var self = this; 

    var initializePage = function() { 
     console.log('in init'); 
    }; 

    dM.getResources() 
     .done(initializePage, function(result) { 
      console.log('in fx'); 
      console.log(result); 
      console.log(result.CannotDeleteWithChild); 
     }); 

})($, reportGroupDataManager, data); 

Yani normalde dM.getResources()result bir nesne

ama bu kod ile emin değilim hangi reportGroupDataManager veri almaya gidiyor neden hata

yukarıdaki

aynı Fiddle ->https://jsfiddle.net/MillerDev/5qmnqr6q/

cevap

2

reportGroupDataManager bir kurucu değil, bir nesnedir. Ancak, reportGroupDataManager tarafından oluşturulan bir nesne bekliyorsunuz. Bu nedenle hayattan bu şekilde olmalıdır:

(function(){ 
    // ... 
})($, new reportGroupDataManager(), data); 
+0

BTW, kurucular şey dönmek gerek yoktur. Hatta 'this' (sizin durumunuzda' self') – slebetman

+0

Yakalanmayan TypeError: reportGroupDataManager bir yapıcı –

+0

@MillRunner değildir: Çalışır çünkü bir yazım hatası ya da bir şey olması gerekir: https://jsfiddle.net/slebetman/yecgm1bp/ – slebetman

0

dM therfore "Bu" bir refrance olarak bu

benzeri 'yeni' fonksiyonunu ihtiyaç

DM için kullanamayan bir yapıcı işlevi değil

function ReportGroupDataManager(){ 
 
this.getResources = function(){ 
 
    return object 
 
} 
 
} 
 

 
let reportGroupDataManager = new ReportGroupDataManager() 
 

 
(function(jQ, dM, data) { 
 
    var self = this; 
 

 
    var initializePage = function() { 
 
     console.log('in init'); 
 
    }; 
 

 
    dM.getResources() 
 
     .done(initializePage, function(result) { 
 
      console.log('in fx'); 
 
      console.log(result); 
 
      console.log(result.CannotDeleteWithChild); 
 
     }); 
 

 
})($, reportGroupDataManager, data);

+0

'da yakalandığını okumanızı şiddetle öneririm Dikkat Çekilmemiş TypeError: (ara değer) bir işlev değil –