簡體   English   中英

無法在jquery document.ready中初始化對象

[英]Cannot init an object in jquery document.ready

我有一個名為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/

問題是因為你正在重新定義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> 

嘗試這個:

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

您只需要在調用此函數的位置更改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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM