Javascript对象构造函数设置为未定义

Javascript对象构造函数设置为未定义,javascript,object,prototype,undefined,Javascript,Object,Prototype,Undefined,我创建了一个新对象,在该对象中我有几个对象变量,但是事件(可选)对象没有正确设置。当在构建函数中被event选项卡调用时,它被认为是未定义的,我猜这与它可能是异步的有关。下面是我的对象和调用,以及引用该对象时得到的结果 我不明白为什么在调用build函数之前,它会被设置为未定义的 更新:此小提琴与所调用的代码完全相同 问题出在checkEvents()方法中 问题是build的定义后缺少分号。如果没有分号,基本上就是这样: Wizard.prototype.build = function()

我创建了一个新对象,在该对象中我有几个对象变量,但是事件(可选)对象没有正确设置。当在构建函数中被event选项卡调用时,它被认为是未定义的,我猜这与它可能是异步的有关。下面是我的对象和调用,以及引用该对象时得到的结果

我不明白为什么在调用build函数之前,它会被设置为未定义的

更新:此小提琴与所调用的代码完全相同

问题出在checkEvents()方法中


问题是
build
的定义后缺少分号。如果没有分号,基本上就是这样:

Wizard.prototype.build = function() {
  // do stuff
}(function($, undefined) { ... })();
也就是说,您试图立即调用函数并将函数作为参数传递给它。这是您的代码,分号在正确的位置

var向导=函数(id、事件){
console.log(事件);
this.activeTab='';
this.prevTab='';
this.nextTab='';
this.events=(events)?events:{};//可选的events对象。用户可以根据tab定义事件。(例如“tabName”:function(){})
console.log(this.events);//返回不带键的对象
这个.build(id);
归还这个;

}; // 问题是
build
的定义后缺少分号。如果没有分号,基本上就是这样:

Wizard.prototype.build = function() {
  // do stuff
}(function($, undefined) { ... })();
也就是说,您试图立即调用函数并将函数作为参数传递给它。这是您的代码,分号在正确的位置

var向导=函数(id、事件){
console.log(事件);
this.activeTab='';
this.prevTab='';
this.nextTab='';
this.events=(events)?events:{};//可选的events对象。用户可以根据tab定义事件。(例如“tabName”:function(){})
console.log(this.events);//返回不带键的对象
这个.build(id);
归还这个;

}; // 我不是这样定义的。我正在使用$.extend(Wizard.prototype,{build:function(){}});方法。@jamadri然后显示您的确切代码。如你所见,这就是本案的问题所在。如果你正在做其他事情,但这并不能解决问题,我需要查看代码。我将用我创建的整个小部件的fiddle URL来修改它。也许这会让我们知道到底发生了什么xD@jamadri减少示例时,确保结果不会改变,并且可以观察到相同的问题。现在,您已收到问题的答案,请不要对问题进行编辑,否则会使您得到的答案无效。相反,问一个新问题。@jamadri你检查过我的更新了吗?答案在底部,我并不是这样定义的。我正在使用$.extend(Wizard.prototype,{build:function(){}});方法。@jamadri然后显示您的确切代码。如你所见,这就是本案的问题所在。如果你正在做其他事情,但这并不能解决问题,我需要查看代码。我将用我创建的整个小部件的fiddle URL来修改它。也许这会让我们知道到底发生了什么xD@jamadri减少示例时,确保结果不会改变,并且可以观察到相同的问题。现在,您已收到问题的答案,请不要对问题进行编辑,否则会使您得到的答案无效。相反,问一个新问题。@jamadri你检查过我的更新了吗?答案在下面。