最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Cannot init an object in jquery document.ready - Stack Overflow

programmeradmin0浏览0评论

I have an javascript object named concept:

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

I am trying to initiate it in jQuery document.ready:

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

It returns an error:

Uncaught TypeError: concept is not a constructor

If I move the object inside the document.ready, it is working.

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

I am still new on javascript, as far as I understood document.ready is run when DOM is pleted. I don't understand why it cannot access the object which is defined out of the document.ready scope.

Here it is the fiddle: /

I have an javascript object named concept:

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

I am trying to initiate it in jQuery document.ready:

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

It returns an error:

Uncaught TypeError: concept is not a constructor

If I move the object inside the document.ready, it is working.

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

I am still new on javascript, as far as I understood document.ready is run when DOM is pleted. I don't understand why it cannot access the object which is defined out of the document.ready scope.

Here it is the fiddle: https://jsfiddle/49rkcaud/1/

Share Improve this question edited May 13, 2016 at 11:26 Rory McCrossan 338k41 gold badges320 silver badges351 bronze badges asked May 13, 2016 at 11:22 londondevlondondev 2312 silver badges13 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 4

The issue is because you're redefining concept. You just need to change the name of the variable:

$(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./ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Try this:

Jsfiddle: https://jsfiddle/3w284mcs/

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

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

You just need to change variable name where call this function.

Answer

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

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

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

Better Approach

You should create object of function using ()

var objConcetp = new concept();

Also use constructor rather than directly assigning values. Your function look like:

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

function concept(conceptId, name){
   this.ConceptId = conceptId;
   this.Name = name;
}
发布评论

评论列表(0)

  1. 暂无评论