Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要在使用对象时自动调用初始化函数吗_Javascript - Fatal编程技术网

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