我一遍又一遍地读到全局变量和函数是不好的,必须不惜一切代价避免它们。但我一直无法做到这一点。我敢肯定这个问题已经被问过很多次了,我已经在 SO 上阅读过它们,但我仍然不完全理解。
我有一个对象,它有几个需要在特定事件上调用的方法(例如按钮单击)。我可以在匿名函数中隐藏所有内容,但是一旦这样做,我就不能再从外部调用对象内的方法。避免这种情况的唯一方法是将对象暴露给全局空间,以便它可以调用对象内的方法。
她的就是我的意思。
JavaScript
(function () { // using anonymous function to conceal variables/functions
function Ninja (name) {
this.name = name;
this.hide = function () {
alert("Find me if you can!");
};
this.kill = function (target) {
alert(name + " killed " + target + ".");
};
}
this.myNinja = new Ninja (""); // ... but I need to expose the object to global space
})();
HTML
<button onclick="myNinja.hide()">Click Me</button>
如何防止事情走向全球,但仍然能够调用定义隐藏对象的方法?这甚至可能吗?