如何防止在Javascript中的另一个函数之外调用函数?

如何防止在Javascript中的另一个函数之外调用函数?,javascript,Javascript,我有一个javascript函数function1,它在调用另一个遗留函数function2之前检查一些全局变量,用户可以连接这些变量吗?function2实际上弹出一个窗口并将用户连接到我们的服务。我想防止函数2在函数1之外的任何地方被调用。这可能吗 作为一个廉价的解决方案,我想我可以从function1发出一个变量,并在执行之前在function2中检查它。还有别的办法吗?有没有办法找出javascript函数中的调用元素/方法?为什么不删除函数2,将其全部内容移动到函数1中 然后,您可以将

我有一个javascript函数function1,它在调用另一个遗留函数function2之前检查一些全局变量,用户可以连接这些变量吗?function2实际上弹出一个窗口并将用户连接到我们的服务。我想防止函数2在函数1之外的任何地方被调用。这可能吗


作为一个廉价的解决方案,我想我可以从function1发出一个变量,并在执行之前在function2中检查它。还有别的办法吗?有没有办法找出javascript函数中的调用元素/方法?

为什么不删除函数2,将其全部内容移动到函数1中


然后,您可以将旧的函数1替换为表示错误的内容。

为什么不删除函数2,将其全部内容移动到函数1中

然后,您可以将旧的函数1替换为表示错误的内容。

请阅读此处:。在第一个函数中声明函数

请阅读此处:。在第一个函数中声明函数

您应该检查以下内容:

这是:

您应该检查以下内容:

这是:


您可以将function2移动到function1的内部,这样它对function1是私有的。查看。

您可以将function2移动到function1的内部,这样它对function1是私有的。查看。

虽然声明function2是有效的解决方案,但这实际上是我问题的简化版本。实际上有多个function2,在function1中声明它们似乎有点混乱。这就是为什么我用arguments.callee.caller标记答案。谢谢大家!虽然声明function2是一个有效的解决方案,但这实际上是我问题的简化版本。实际上有多个function2,在function1中声明它们似乎有点混乱。这就是为什么我用arguments.callee.caller标记答案。谢谢大家!
var function1 = function() {
    var function2 = function() { alert('hi'); };

    function2();
};

function1(); // alerts "hi";

function2(); // error function2 is undefined