Javascript 要在使用对象时自动调用初始化函数吗
我有下面的代码。在这段代码中,我有一个名为Javascript 要在使用对象时自动调用初始化函数吗,javascript,Javascript,我有下面的代码。在这段代码中,我有一个名为func的类。在func中,我有3个函数,即init、func1和func2。然后在返回对象文本之前调用init函数。因此,当我使用var f=new func()创建这个类的新实例时,它会自动调用init函数,所以我不必手动调用它。所以它就像其他面向对象语言中的构造函数一样,当创建一个类的新实例时,构造函数会自动被调用 这是密码 var func = function () { var a, b, init = function
func
的类。在func
中,我有3个函数,即init、func1和func2
。然后在返回对象文本之前调用init函数。因此,当我使用var f=new func()
创建这个类的新实例时,它会自动调用init
函数,所以我不必手动调用它。所以它就像其他面向对象语言中的构造函数一样,当创建一个类的新实例时,构造函数会自动被调用
这是密码
var func = function () {
var a, b,
init = function () {
a = 1;
b = 2;
},
func1 = function () {
},
func2 = function () {
};
init();
return {
func1: func1,
func2: func2
};
};
var f = new func();
现在我想在下面的场景中做与上面完全相同的事情。也就是说,每当我调用func
对象中的任何函数时,我希望自动调用init
函数
var func = {
init: function () {
},
func1: function () {
},
func2: function () {
}
}
func.func1();
在上述场景中,每当我调用func对象中的任何函数时,是否可以自动调用init函数?如果是,那么如何存储?您需要将所有对象的引用存储在数据结构中,就像一个字典一样,基本上每次调用函数时,您都需要查看字典,查看对象以前是否使用过,如果没有初始化它。
除此之外,如果没有设置对象中的标志,我认为除了让每个函数调用初始值设定项之外,没有其他方法可以做到这一点。您需要将所有对象的引用存储在数据结构中,就像字典一样,基本上,每次调用函数时,您都需要查看字典,查看该对象以前是否使用过,如果没有初始化的话。
除此之外,如果没有设置对象中的标志,我认为除了让每个函数调用初始值设定项之外,没有其他方法可以做到这一点。这是可行的,但我不建议这样做,为什么不使用
类呢
这是可行的,但我不建议这样做,为什么不直接使用类
您想调用它一次还是每次?您想调用它一次还是每次?最好有条件地检查init是否已运行,并在每个函数中调用它。考虑到类可以更好地服务于此类功能,仍然不值得这么做。@DavidBarker,这不是OP想要的。“…每当我在上述场景中调用func对象内的任何函数时”。因此,它调用init()
。我同意只使用一个类。是的,我知道他是这么说的,但他的类示例实际上并没有这样做。。。DavidBarker很喜欢模糊性。@DavidBarker-说真的,这不仅是模糊的,我不明白为什么OP会试图重新发明一些已经存在的东西。最好有条件地检查init是否已经运行,并在每个函数中调用它。考虑到类可以更好地服务于此类功能,仍然不值得这么做。@DavidBarker,这不是OP想要的。“…每当我在上述场景中调用func对象内的任何函数时”。因此,它调用init()
。我同意只使用一个类。是的,我知道他是这么说的,但他的类示例实际上并没有这样做。。。“我喜欢模棱两可。”大卫伯克——说真的,它不仅模棱两可,我不明白为什么OP试图重新发明一些已经存在的东西。
var func = {
a:0,
b:0,
init: function () {
this.a = 1;
this.b = 2;
console.log('init');
},
func1: function () {
console.log('func1');
this.init();
console.log(this.a);
console.log(this.b)
},
func2: function () {
console.log('func2');
this.init();
console.log(this.a);
console.log(this.b)
}
}
func.func1();
console.log("func1>" + func.a);
console.log("func1>" + func.b);
func.a = 0;
func.b = 0;
func.func2();
console.log("func2>" + func.a);
console.log("func2>" + func.b);