无法在jquery document.ready中初始化对象

时间:2016-05-13 11:22:24

标签: javascript jquery

我有一个名为concept的javascript对象:

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

我试图在jQuery document.ready中启动它:

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

它返回错误:

  

未捕获的TypeError:概念不是构造函数

如果我在document.ready内移动对象,它就可以了。

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

我仍然是javascript的新手,据我所知,document.ready在DOM完成时运行。我不明白为什么它无法访问document.ready范围内定义的对象。

这是小提琴:https://jsfiddle.net/49rkcaud/1/

3 个答案:

答案 0 :(得分:4)

问题是因为您正在重新定义concept。您只需要更改变量的名称:



$(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>
&#13;
&#13;
&#13;

答案 1 :(得分:4)

试试这个:

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);  
  });

答案 2 :(得分:3)

您只需要更改调用此功能的variable名称。

<强>答案

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

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

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

更好的方法

您应该使用()

创建函数对象
var objConcetp = new concept();

同时使用constructor而不是直接分配values。你的功能如下:

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

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