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