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

lon*_*dev 7 javascript jquery

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

function concept() {
    this.ConceptId = 0;
    this.Name = "";
}
Run Code Online (Sandbox Code Playgroud)

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

$(document).ready(function() {
    var concept = new concept;
});
Run Code Online (Sandbox Code Playgroud)

它返回一个错误:

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

如果我将对象移到其中document.ready,它就可以工作了.

$(document).ready(function() {
    function concept() {
        this.ConceptId = 0;
        this.Name = "";
    }
    var concept = new concept;
});
Run Code Online (Sandbox Code Playgroud)

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

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

Ror*_*san 5

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

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

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