JavaScript闭包应用场景(二)

2023-05-17 13:31:46 浏览数 (1)

事件处理程序

闭包可以用于处理事件回调函数,保持对外部变量的访问,并且可以在事件触发时访问这些变量。

代码语言:javascript复制
function createButton() {
  var counter = 0;

  var button = document.createElement('button');
  button.textContent = 'Click me';

  button.addEventListener('click', function() {
    counter  ;
    console.log('Button clicked '   counter   ' times.');
  });

  return button;
}

var myButton = createButton();
document.body.appendChild(myButton);

在这个示例中,createButton函数创建一个按钮元素,并绑定了一个点击事件回调函数。回调函数使用闭包访问和更新外部变量counter,并在每次点击时打印计数器的值。

模块化开发

闭包可以用于实现模块化开发,通过创建私有变量和暴露公共接口来组织和封装代码。

代码语言:javascript复制
var myModule = (function() {
  var privateVariable = 'I am private';

  function privateFunction() {
    console.log('This is a private function.');
  }

  return {
    publicMethod: function() {
      console.log('This is a public method.');
      privateFunction();
    },
    getPrivateVariable: function() {
      return privateVariable;
    }
  };
})();

myModule.publicMethod(); // 输出: This is a public method. This is a private function.
console.log(myModule.getPrivateVariable()); // 输出: I am private

在这个示例中,我们使用立即执行函数创建了一个模块。模块内部定义了私有变量privateVariable和私有函数privateFunction,并返回一个包含公共方法和获取私有变量的方法的对象。这样,只有通过模块暴露的公共接口才能访问私有变量和函数。

0 人点赞