检测从控制台调用函数的最佳方法

时间:2015-01-17 14:27:32

标签: javascript google-chrome-devtools function-calls ie-developer-tools firefox-developer-tools

我想知道检测通过控制台直接调用方法或函数的最佳方法。就我目前所理解的而言,不可能在相同的函数调用上直接检测它,但是使用函数的.call().apply()方法我可以通过{{传递额外的数据1}}对象。

给出以下代码结构:

this

我可以使用

调用该函数
(function(){
    var Player = {money: 0};
    window.giveMoney = function(amount){
        if (this.legit !== true)
            throw new Error("Don't try to cheat!");

        Player.money += amount;
    }
})();

在我的实际代码中告诉来自控制台和我自己的代码的直接调用,但这显然不是万无一失的,因为同样的代码也可以从控制台执行以达到预期的效果。

我想要一种方法能够从两个地方调用该函数,然后分开调用的位置。如果没有办法做到这一点,那么尝试和阻止执行的最佳方法是什么?最好不要暴露任何方法,并将所有内容保存在一个封闭的匿名函数中吗?

2 个答案:

答案 0 :(得分:-1)

您可以通过带有布尔变量的中央访问点来假脱机所有函数调用,这可以作为调用是否来自控制台的指示....

var maths = {
    add: function(p1,p2)
    {
        console.log(p1,p2);
    }
}

var invoker = {
    invoke: function(fu,isconsole)
    {
        if(isconsole)
        {
            console.log("Called from console");
        }

        //invokes the function with all parameters intact
        fu;
    }
}

//Call without console
invoker.invoke(maths.add(2,3));

//Call with console
invoker.invoke(maths.add(2,3),true);

希望它有所帮助!!!

答案 1 :(得分:-1)

您可以在控制台中使用monitor()命令来监视何时调用函数。 https://developer.chrome.com/devtools/docs/commandline-api#monitorfunction

只需运行monitor(functionName);,每当调用该函数时,它都会在控制台中输出一条消息。