功能触发两次

时间:2018-04-13 14:31:59

标签: javascript node.js class

我有一个用Node.js编写的类,但是当我在类中触发一个函数时,它运行了两次console.log。

class Client{

    constructor(){
        this.test();
    }

    test(){
        console.log("testing");
    }
}

var RR = new Client;
RR.test();

我感谢所有的帮助,我认为这对你来说是常识,但我无法解决。

控制台输出:

C:\Users\XXX\Desktop\NodeRR>node index.js
test
test

4 个答案:

答案 0 :(得分:4)

$scope.displayPopUp=function(){
    var alertPopup = $ionicPopup.show({
        templateUrl: 'sharePopUp.html',
        title: 'Invite a friend',
        cssClass: 'popupShare',
        buttons:[
            {
                text:'Close',
                type: 'button-round button-no',
                onTap: function(){
                        /* Some instructions here */
                    }
            },
            { /* v THIS IS THE BUTTON I WANT TO DISABLE UNDER CERTAIN CONDITIONS v */
                text:'Share',
                type: 'button-round button-yes',
                onTap: function(){
                       /* Some instructions here */
                    }
            }
        ]
    }); 

    $(".button-yes")[0].setAttribute("ng-disabled", "MyFunction()"); /* NOT WORKING BECAUSE button-yes IS NOT EXISTING YET */
}

这部分代码在创建新对象时调用测试方法,然后您在行中再次调用它

constructor(){
        this.test();
    }

删除构造函数调用或您自己的调用。然后它将根据您的要求运行一次。

答案 1 :(得分:2)

正在构造函数上调用方法test,因此在创建新实例时,将调用构造函数并调用该方法。

如果您不希望它被调用两次,请从构造函数中删除它,然后使用RR.test();

答案 2 :(得分:0)

在代码中,您可以在构造函数中调用test()函数。所以当你执行new Client()时,它会调用构造函数。然后你拨打RR.test()

答案 3 :(得分:0)

您正在从课程中调用方法Client#test' constructor方法和来自给定引用的此实例。您可以通过从this.test();类'中删除行Client来解决此问题。构造函数或从脚本中删除行RR.test();