如何创建包含构造函数的Javascript包?
在这里,我尝试创建一个名为com.matogen.ght的包,其中包含一个类Calendar。我希望在实例化calendar对象时自动调用init()方法。下面的示例可以工作,但我仍然必须显式调用init()方法如何创建包含构造函数的Javascript包?,javascript,constructor,package,Javascript,Constructor,Package,在这里,我尝试创建一个名为com.matogen.ght的包,其中包含一个类Calendar。我希望在实例化calendar对象时自动调用init()方法。下面的示例可以工作,但我仍然必须显式调用init()方法 只需像这样更改init函数 this.init = (function() { console.log("This is my constructor"); }()); 使用一个自执行的匿名函数,或者,如果您愿意,只需像这样调用函数本身 ... Calendar :
只需像这样更改
init
函数
this.init = (function() {
console.log("This is my constructor");
}());
使用一个自执行的匿名函数,或者,如果您愿意,只需像这样调用函数本身
...
Calendar : function() {
this.init = function() {
console.log("This is my constructor");
};
this.init();
}
...
好的,当你在做新的
时,日历()是你的构造函数
因此:
。。。将是准确的。我对JavaScript的OOP没有太多经验,因此任何关于如何改进代码的提示和建议都值得赞赏:)顺便说一句,“Calendar”周围的引号是不必要的。在您的第一个示例中,this.init被指定为undefined。函数调用是即时的,但函数不调用自身。@LeeKowalkowski,那么它是如何工作的?我一直认为它会自我调用(上面的示例确实有效-我在问它为什么有效)/它是一个init()。如果您再也不需要调用init()
,那么即使有一个函数句柄或函数也没有意义。调用自身的函数将是递归的(即从函数内部调用自身)。这是一个函数声明,由它的超级上下文而不是自身立即调用。因此,如果我在日历中有另一个方法,我将如何调用它,比如说init()?你可以在函数中有函数,你只需正常调用它们。如果要从函数外部调用它们,则需要导出其引用。在您问题中的示例中,您是通过向this.init
分配一个匿名函数来导出其引用的<代码>此
指调用函数时使用new
创建的对象。该新对象被指定给cal
变量。
...
Calendar : function() {
this.init = function() {
console.log("This is my constructor");
};
this.init();
}
...
var com = {
matogen : {
ght : {
Calendar : function() {
console.log("This is my constructor");
}
}
}
}