JavaScript: "uncaught TypeError" nur in externer JS-Datei



  • Hallo liebe Javascript-Gemeinde,

    für eine Webseite verwende ich die Webcontrols "kendoUI jQuery" der Fa. Telerik. Hier stoße ich auf ein mir unbekanntes Objekt-Problem, sobald im JavaScript Code ein Erzeugen mittels "new" in einer ext. JS-Datei stattfindet.

    Beispiel, folgendes HTML (auf das Notwendige reduziert):

    <!DOCTYPE html>
    <html lang="de"><head>
    	<meta charset="utf-8" />
    	<link rel="stylesheet" href="/css/kendo.common.min.css">
    	<link rel="stylesheet" href="/css/kendo.default.min.css">
    	<script src="/js/jquery-3.5.1.min.js"></script>
    	<script src="/js/kendo.all.min.js"></script>
    	<script src="/js/mylib.js"></script><!-- ext. JS Datei-->
    </head><body>
    <script type="text/javascript">
    
    $(document).ready(() =>
    {
    	var Test1 = new kendo.data.TreeListDataSource(); // --> OK
    
    	CreateDataSource();
    });
    
    </script>
    </body></html>
    

    Die ext. JS-Datei "mylib.js":

    "use strict";
    
    function CreateDataSource()
    {
    	var Test2 = new kendo.data.TreelistDataSource();
    	// --> Uncaught TypeError: kendo.data.TreelistDataSource is not a constructor
    }
    

    Der Befehl "new kendo.data.TreeListDataSource()" klappt nur im Scriptblock der Webseite, und nicht als Code in der eingebundenen JS-Datei "mylib.js".

    Was ist hier los?
    Wieso schlägt der "new"-Befehl fehl (auch bei anderen Objekten aus kendoUI) sobald das "new" in der ext. JS-Datei ausgeführt wird?

    Meine Kenntisse sind sehr alt was JavaScript angeht, und ich meine mich zu erinnern, daß
    a) es empfohlen wird, JavaScript nach Möglchkeit auszulagern und nicht im HTML einzubetten, und
    b) daß, sobald alles eingeladen wurde vom Browser, meinem JavaScript-Code alles an eingeladenen Bibliotheken (hier kendoUI) zur Verfügung steht. Schaut aber nicht ganz so aus. Liegt es am "namespace"?

    Ich schreibe dies, weil ich echt keine Ahnung habe, nach welchen Stichworten ich suchen kann im WWW.

    Vielen Dank im voraus!
    Hoppelmoppel



  • Evtl. Groß-/Kleinschreibung: TreeListDataSource vs. TreelistDataSource()?



  • Facepalm omg, ja das war's. Jetzt erst sehe ich das. Hab's bei "TreeView" auch "Treeview" auch die ganze Zeit falsch gemacht. 😅 Danke!!