Module Pattern (ok)

https://app.gitbook.com/@javascriptuse/s/advanced/creational-pattern-ok

Đối với app lớn nhiều chức năng thì việc code theo module là điều tối quan trọng. Module pattern này dựa vào khái niệm là Object Literals (Đối tượng theo nghĩa đen). Cái này dịch ra tiếng Việt hiểu chết liền nên mình để nguyên tiếng Anh. Đại loại là một object nhưng được viết theo cặp Key/Value

var myObjectLiteral = {
  variableKey: variableValue,
  functionKey: function() {
    // ...
  }
};

Bằng cách sử dụng kiểu viết này, bạn có thể định nghĩa một module phức tạp với đầy đủ thuộc tính, behavior Ví dụ bạn cần phát triển một module coder có các thuộc tính như đầu to, mắt cận, có behavior như đạo code, quay tay…

var coder = {
  head: 'Đầu to',
  // a very basic method
  daoCode: function(website) {
    console.log('Copy paste from ' + website);
  },
  // output a value based on current configuration
  quayTay: function(times) {
    console.log('Chuyên quay tay vào lúc ' + times);
  }
};
coder.daoCode('google'); // I can haz functionality
coder.quayTay('12 đêm'); // outputs enabled

Như code trên thì có thể thấy được là ở module pattern, bạn không phải tạo object bằng từ khóa new như các pattern trên Ngoài ra còn có thể định nghĩa kiểu privacy giống như public hay private trong Java

var testModule = (function() {
  var counter = 0;
  return {
    incrementCounter: function() {
      return counter++;
    },
    resetCounter: function() {
      console.log('counter value prior to reset:' + counter);
      counter = 0;
    }
  };
})();
// test
testModule.incrementCounter();
testModule.resetCounter();

Trong ví dụ trên thì counter là một biến private còn incrementCounter và resetCounter là public, testModule chỉ có thể truy cập vào public method còn private thì không. Tóm lại nói về Design Pattern thì chỉ gói gọn trong 2 câu đối Design Pattern nhiều như cát ngoài sa mạc Kiến thức JavaScript lắm tựa nước ở biển khơi Pattern trong JavaScript còn rất nhiều trong khuôn khổ 1 bài viết sẽ không thể nói hết. Các bạn có thể tìm kiếm ví dụ thêm trên Google.

Last updated

Navigation

Lionel

@Copyright 2023