클러치의 응용(사유 변수, 코리화, 편함수)

2372 단어

1. 개인 변수


1. 교체기

const countModule = (function () {
  let count = 0;

  function addCount() {
    count++;
    return count;
  }

  function toZero() {
    count = 0;
    return count;
  }
  return {
    addCount,
    toZero
  }
})();
countModule.addCount(); // 1
countModule.addCount(); // 2
countModule.addCount(); // 3
countModule.toZero(); // 0
countModule.addCount(); // 1
countModule.addCount(); // 2
countModule.addCount(); // 3

2. 액세스

const myNameModule = (function () {
  let name = "Mike";

  function getName() {
    return name;
  }

  function setName(value) {
    name = value;
    return name;
  }

  return {
    getName,
    setName
  }
})();
myNameModule.getName(); // 'Mike'
myNameModule.setName('Helen'); // 'Helen'

3. 모듈식

const User = (function () {
  let _password; //  

  class User {
    constructor(username, password) {
      //  
      _password = password;
      this.username = username;
    }

    login() {
      console.log(` :${this.username},  :${_password}`);
    }
  }

  return User;
})();
let user = new User('mike', 'mike123');
console.log(user.username); // 'mike'
console.log(user.password); // undefined
login(); // 'mike' 'mike123'

2. 코리화 함수


콜리화는 n개의 매개 변수를 받아들이는 1개의 함수를 1개의 매개 변수만 받아들이는 n개의 서로 끼워 넣는 함수로 바꾸는 과정이다.즉 fn(a, b, c)은 fn(a)(b)(c)로 변한다.
function personalInfo(school) {
  return function (grade) {
    return function (profession) {
      return ` :${school}  :${grade}  :${profession}`;
    }
  }
}
//  
const schoolName = personalInfo(' ');
//  school, 
let gradeName = schoolName(' ');
//  school grade, 
let professionName = gradeName(' ');
console.log(professionName);

3. 편함수


코리화와의 차이점은 단함수를 더 이상 강조하지 않는다는 것이다.예를 들어 하나의 인삼은 2개의 인삼 함수를 되돌려준다.
function personalInfo2(school) {
  return function (grade, profession) {
    return ` :${school}  :${grade}  :${profession}`;
  }
}
const schoolName2 = personalInfo2(' ');
let gradeAndprofessionName = schoolName2(' ', ' ');
console.log(gradeAndprofessionName);

좋은 웹페이지 즐겨찾기