2016-05-13 10 views
7

Ich habe ein Javascript-Objekt concept genannt:Kann kein Objekt in jquery init document.ready

function concept() { 
    this.ConceptId = 0; 
    this.Name = ""; 
} 

Ich versuche es in jQuery zu initiieren document.ready:

$(document).ready(function() { 
    var concept = new concept; 
}); 

Es gibt einen Fehler zurück:

Uncaught TypeError: concept is not a constructor

Wenn ich das Objekt innerhalb der document.ready verschiebe, ist es Arbeiten.

Ich bin noch neu auf Javascript, soweit ich das verstanden habe. Document.ready wird ausgeführt, wenn DOM abgeschlossen ist. Ich verstehe nicht, warum es nicht auf das Objekt zugreifen kann, das aus dem Bereich document.ready definiert ist.

Hier ist es die Geige: https://jsfiddle.net/49rkcaud/1/

Antwort

4

Das Problem ist, weil Sie concept sind neu zu definieren. Sie müssen nur den Namen der Variablen ändern:

$(document).ready(function() { 
 
    var foo = new concept; // change the variable name here 
 
    alert(foo.ConceptId); // = 0 
 
}); 
 

 
function concept() { 
 
    this.ConceptId = 0; 
 
    this.Name = ""; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Ich denke, die Ausführung der Funktion ist auch notwendig wie 'neues Konzept()' oder nicht? –

+1

Klammern sind optional, wenn das Schlüsselwort 'new' verwendet wird. –

+0

bekam es, geschätzt auch) –

4

Versuchen Sie folgendes:

Jsfiddle: https://jsfiddle.net/3w284mcs/

$(document).ready(function() { 
    var concept = function() { 
     this.ConceptId = 0; 
     this.Name = ""; 
    } 

    var concept_obj = new concept(); 
    alert(concept_obj.ConceptId); 
    }); 
+0

Ich weiß, das funktioniert, aber ich möchte nicht definieren, mein Konzept-Objekt in der jquery Bereich, wie es chaotisch ist . – londondev

3

Sie müssen nur variable Namen ändern, in dem Anruf diese Funktion.

Antwort

$(document).ready(function() { 
    /*function concept() { 
      this.ConceptId = 0; 
      this.Name = ""; 
      }*/ 

    var concept1 = new concept; 
    alert(concept1.ConceptId); 
    }); 

    function concept() { 
    this.ConceptId = 5; 
    this.Name = ""; 
    } 

besserer Ansatz

Sie Aufgabe Funktion erstellen sollten ()

var objConcetp = new concept(); 

Auch constructor eher direkt verwenden Verwendung als values zuweisen. Ihre Funktion sieht folgendermaßen aus:

$(document).ready(function(){ 
    var oConcept = new concept(1, "YourName"); 
}); 

function concept(conceptId, name){ 
    this.ConceptId = conceptId; 
    this.Name = name; 
} 
+1

2 Antworten haben das Problem mit guter Erklärung gelöst. Du hast nichts Neues hinzugefügt. –

+0

Ja, ich bin ein bisschen spät zu beantworten beide Optionen zu erklären :) –

+0

np, Sie haben richtig geantwortet, so upvote ist deins :) –

Verwandte Themen