πŸ”₯ [UIUX] 0124 JAVASCRIPT Coding, μ½”λ”© μ΄ˆκΈ‰~κ³ κΈ‰ 15

You_Jin.Β·2025λ…„ 1μ›” 25일
1
post-thumbnail

✏️ 2025. 1μ›” 24일 / javascript μ΄ˆκΈ‰~κ³ κΈ‰ 15

πŸ’– 객체 μƒμ„±μž ν•¨μˆ˜
λ‚΄μž₯ 객체λ₯Ό 생성할 λ•Œμ—λŠ” 이미 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 λ‚΄μž₯λ˜μ–΄ μžˆλŠ”
객체 μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
객체 μƒμ„±μž ν•¨μˆ˜λŠ” 객체λ₯Ό μƒμ„±ν•œ 후에 κ·Έ 객체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
객체 μƒμ„±μž ν•¨μˆ˜λŠ” μΌμ’…μ˜ λΉ΅ν‹€κ³Ό λΉ„μŠ·ν•©λ‹ˆλ‹€.
객체의 틀을 ν•˜λ‚˜ λ§Œλ“€μ–΄λ‘κ³  λ™μΌν•œ ν˜•μ‹μ˜ 객체λ₯Ό μ—¬λŸ¬κ°œ 찍어내고 싢을 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      function ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2...){
        this.속성λͺ… = κ°’;
        this.ν•¨μˆ˜λͺ… = function(){μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;}
      }
      -
      let μ°Έμ‘°λ³€μˆ˜(μΈμŠ€ν„΄μŠ€λ„€μž„) = new ν•¨μˆ˜λͺ…();
      ↓
      let μ°Έμ‘°λ³€μˆ˜ = {속성:μƒˆ κ°’, ν•¨μˆ˜λͺ…:function(){λ©”μ„œλ“œ λ‚΄μš©}}
//객체 μƒμ„±μž ν•¨μˆ˜
      function CheackWeight(name, height, weight) {
        this.userName = name;
        this.userHeight = height;
        this.userWeight = weight;
        this.minWeight;
        this.maxWeight;
        //μ‚¬μš©μžμ˜ 이름, ν‚€, λͺΈλ¬΄κ²Œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ©”μ„œλ“œ
        this.getInfo = function () {
          let str = "";
          str += "πŸ‘§πŸ» 이름: " + this.userName + "<br/>";
          str += "ν‚€: " + this.userHeight + "<br/>";
          str += "λͺΈλ¬΄κ²Œ: " + this.userWeight + "<br/>";
          return str;
        };
        //정상λͺΈλ¬΄κ²Œ, ν‘œμ€€ 였차 λͺΈλ¬΄κ²Œλ₯Ό κ΅¬ν•˜μ—¬ 평균 체쀑인지 μ•„λ‹Œμ§€ 좜λ ₯ν•΄μ€λ‹ˆλ‹€.
        this.getResult = function () {
          //μ •μƒμ²΄μ€‘μ˜ μ΅œμ € λͺΈλ¬΄κ²Œ
          this.minWeight = (this.userHeight - 100) * 0.9 - 5;
          //μ •μƒμ²΄μ€‘μ˜ 졜고 λͺΈλ¬΄κ²Œ
          this.maxWeight = (this.userHeight - 100) * 0.9 + 5;
          //μ‚¬μš©μžμ΄ λͺΈλ¬΄κ²Œ >= μ΅œμ €λͺΈλ¬΄κ²Œ && μ‚¬μš©μžμ˜ λͺΈλ¬΄κ²Œ <= 졜고 λͺΈλ¬΄κ²Œ
          if (
            this.userWeight >= this.minWeight &&
            this.userWeight <= this.maxWeight
          ) {
            return "μ •μƒμ²΄μ€‘μž…λ‹ˆλ‹€.";
          } else if (this.userWeight < this.minWeight) {
            return "μ €μ²΄μ€‘μž…λ‹ˆλ‹€.";
          } else {
            return "κ³Όμ²΄μ€‘μž…λ‹ˆλ‹€." + "<br/>";
          }
        };
      }
      let dotKim = new CheackWeight("κΉ€λ•‘λ•‘", 168, 67);
      let dotLee = new CheackWeight("이땑땑", 172, 64);
      console.log(dotKim);
      console.log(dotLee);
      document.write(dotKim.getInfo());
      document.write(dotKim.getResult());
      document.write("---------------------------------------------" + "<br/>");
      document.write(dotLee.getInfo());
      document.write(dotLee.getResult());
      //각 κ°μ²΄λ§ˆλ‹€ λ©”μ„œλ“œλ₯Ό κ³ μœ ν•˜κ²Œ μ €μž₯ν•˜κ³  μžˆμœΌλ―€λ‘œ false
      document.write(dotKim.getResult === dotLee.getResult);

πŸ’› λ©”λͺ¨λ¦¬ μ ˆμ•½μ„ μœ„ν•œ ν”„λ‘œν† νƒ€μž… μ‚¬μš©ν•˜κΈ°
객체 μƒμ„±μž ν•¨μˆ˜μ—μ„œ ν”„λ‘œν† νƒ€μž… 없이 λ©”μ„œλ“œλ₯Ό λ“±λ‘ν•˜λ©΄
ν•΄λ‹Ή 객체 μƒμ„±μž ν•¨μˆ˜λ‘œλΆ€ν„° μƒμ„±λœ κ°μ²΄λŠ” λͺ¨λ‘ λ™μΌν•œ λ©”μ„œλ“œλ₯Ό κ³ μœ ν•˜κ²Œ κ°€μ§€κ²Œ λ©λ‹ˆλ‹€.
즉, 객체가 2κ°œκ°€ μƒμ„±λ˜λ©΄ λͺ¨μ²΄ μ•ˆμ— μžˆλŠ” λ©”μ„œλ“œλ“€μ„
μƒˆλ‘­κ²Œ μžλ°”μŠ€ν¬λ¦½νŠΈ λ©”λͺ¨λ¦¬ 곡간에 κ³ μœ ν•˜κ²Œ 또 μ €μž₯ν•©λ‹ˆλ‹€.
이 방법은 λ©”λͺ¨λ¦¬μ˜ 곡간을 λ‚­λΉ„ν•˜κ²Œ 되고, 이 λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•˜λ €λ©΄
prototype을 μ‚¬μš©ν•˜μ—¬ λ©”μ„œλ“œλ₯Ό λ“±λ‘ν•˜λ©΄ λ©λ‹ˆλ‹€.
prototype을 λ“±λ‘ν•˜λŠ” 방법은 λͺ¨μ²΄κ°€ λ˜λŠ” 객체 μƒμ„±μž ν•¨μˆ˜ μ•ˆμ—
prototypeμ΄λΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ©”μ„œλ“œλ₯Ό λ“±λ‘ν•˜λ©΄ λ©λ‹ˆλ‹€.
μ΄λ ‡κ²Œ ν•˜λ©΄ λͺ¨μ²΄λ‘œλΆ€ν„° μƒμ„±λœ κ°μ²΄λŠ” λ©”μ„œλ“œλ₯Ό κ³ μœ ν•˜κ²Œ κ°€μ§€μ§€ μ•Šκ³ ,
ν•„μš”ν• λ•Œλ§ˆλ‹€ λͺ¨μ²΄μ—μ„œ κΊΌλ‚΄μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      function ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2...){
      this.속성λͺ… = κ°’;
      ν•¨μˆ˜λͺ….prototype.λ©”μ„œλ“œλͺ… = function(){
        μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;
      }
      }
      let λ³€μˆ˜λͺ… = new ν•¨μˆ˜λͺ…(인수1, 인수2...);

πŸ’œ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 또 λ‹€λ₯Έ μ—¬λŸ¬ λ‚΄μž₯ν•¨μˆ˜
1. encodeURI() : 문자λ₯Ό μœ λ‹ˆμ½”λ“œ κ°’μœΌλ‘œ 인코딩 ν•©λ‹ˆλ‹€. (영문, 숫자, 일뢀 기호 : ;,/:?@&=+$ μ œμ™Έ)
2. encodeURIComponent() : 문자λ₯Ό μœ λ‹ˆμ½”λ“œ κ°’μœΌλ‘œ 인코딩 ν•©λ‹ˆλ‹€.
3. decodeURI() : μœ λ‹ˆμ½”λ“œ 값을 λ””μ½”λ”©ν•˜μ—¬ λ‹€μ‹œ λ¬Έμžν™” ν•©λ‹ˆλ‹€.
4. decodeURIComponent() : μœ λ‹ˆμ½”λ“œ 값을 λ””μ½”λ”©ν•˜μ—¬ λ‹€μ‹œ λ¬Έμžν™” ν•©λ‹ˆλ‹€.
5. parseInt() : λ¬Έμžμ—΄ 데이터λ₯Ό μ •μˆ˜ν˜• λ°μ΄ν„°λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€. Number()와 λΉ„μŠ·ν•©λ‹ˆλ‹€.
ex) parseInt("15px") > 15λ₯Ό λ°˜ν™˜
ex) parseInt("5.12") > 5λ₯Ό λ°˜ν™˜
6. parseFloat() : λ¬Έμžμ—΄ 데이터λ₯Ό μ‹€μˆ˜ν˜• λ°μ΄ν„°λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.
ex) parseFloat("5.12") > 1.12λ₯Ό λ°˜ν™˜
ex) parseFloat("65.5%") > 65.5λ₯Ό λ°˜ν™˜
7. isNaN() : is not a number의 μ•½μžλ‘œ μˆ«μžκ°€ μ•„λ‹Œ λ¬Έμžκ°€ ν¬ν•¨λ˜μ–΄ 있으면 trueλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
8. eval() : λ¬Έμžν˜• 데이터λ₯Ό λ”°μ˜΄ν‘œκ°€ μ—†λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

⭐ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 이벀트
λŒ€λΆ€λΆ„μ˜ ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ ν™”λ©΄μ—μ„œ λ²„νŠΌμ„ ν΄λ¦­ν•˜κ±°λ‚˜
ν•­λͺ©μ„ μ„ νƒν•˜λŠ” λ“±μ˜ ν–‰μœ„λ₯Ό ν–ˆμ„ λ•Œ μ‹€ν–‰λ©λ‹ˆλ‹€.
이처럼 λ²„νŠΌμ„ ν΄λ¦­ν•˜κ±°λ‚˜ μ„ νƒν•˜λŠ” λ“±μ˜ λͺ¨λ“  ν–‰μœ„λ₯Ό 이벀트라고 ν•©λ‹ˆλ‹€.
즉, λΈŒλΌμš°μ € μ•ˆμ—μ„œ μ‚¬μš©μžκ°€ ν•˜λŠ” λͺ¨λ“  ν–‰μœ„λ₯Ό κ³§ 이벀트라고 ν‘œν˜„ν•©λ‹ˆλ‹€.
그리고 μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜λ₯Ό '이벀트 처리기' λ˜λŠ”, '이벀트 ν•Έλ“€λŸ¬'라고 λΆ€λ¦…λ‹ˆλ‹€.
⭐ 이벀트의 μ’…λ₯˜

[마우슀 이벀트]
      1. ⭐ click : μ‚¬μš©μžκ°€ html μš”μ†Œλ₯Ό 클릭할 λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      2. dbclick : μ‚¬μš©μžκ°€ html μš”μ†Œλ₯Ό 더블클릭할 λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      3. mousedown : μ‚¬μš©μžκ°€ html μš”μ†Œ μœ„μ—μ„œ 마우슀 λ²„νŠΌμ„ λˆ„λ₯΄λŠ” μˆœκ°„ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      4. mouseup : μ‚¬μš©μžκ°€ html μš”μ†Œ μœ„μ—μ„œ 마우슀 λ²„νŠΌμ„ λˆŒλ €λ‹€ λ–ΌλŠ” μˆœκ°„ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      5. ⭐ mousemove : μ‚¬μš©μžκ°€ μš”μ†Œ μœ„μ—μ„œ 포인터λ₯Ό μ›€μ§μΌλ•Œλ§ˆλ‹€ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      6. ⭐ mouseover : μ‚¬μš©μžκ°€ μš”μ†Œ μœ„μ— 마우슀λ₯Ό μ˜¬λ Έμ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      [ν‚€λ³΄λ“œ 이벀트]
      1. ⭐ keydown : μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œμ˜ ν‚€λ₯Ό λˆ„λ₯΄λŠ” λ™μ•ˆ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€. (ν•œκΈ€μ œμ™Έ)
                    ν‚€λ³΄λ“œμ˜ λͺ¨λ“  킀에 λŒ€ν•œ μ½”λ“œ 값을 λ°˜ν™˜ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.
      2. keypress : μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œμ˜ ν‚€λ₯Ό λˆ„λ₯΄λŠ” λ™μ•ˆ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
                    λ¬Έμžν‚€λ₯Ό μ œμ™Έν•œ ν‚€μ˜ μ½”λ“œ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
                    (κΈ°λŠ₯ν‚€(f1~f12, ctrl, altλ“±λ“±...)λŠ” μ œμ™Έ)
      3. keyup : μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œμ˜ ν‚€λ₯Ό λˆŒλ €λ‹€ 뗐을 λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      [λ¬Έμ„œ λ‘œλ”© 이벀트]
      1. abort : λ¬Έμ„œκ°€ μ™„μ „νžˆ λ‘œλ”©λ˜κΈ° 전에 뢈러였기λ₯Ό λ©ˆμ·„μ„ λ•Œ 이벀트 λ°œμƒν•©λ‹ˆλ‹€.
      2. ⭐ error : λ¬Έμ„œκ°€ μ •ν™•νžˆ λ‘œλ”©λ˜μ§€ μ•Šμ•˜μ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      3. ⭐ load : λ¬Έμ„œκ°€ λ‘œλ”©μ΄ λλ‚˜λ©΄ 이벀트λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      4. resize : λ¬Έμ„œ ν™”λ©΄ 크기가 λ°”λ€Œμ—ˆμ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      5. scroll : λ¬Έμ„œ 화면이 슀크둀 λ˜μ—ˆμ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      6. unload : λ¬Έμ„œμ—μ„œ λ²—μ–΄λ‚  λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      [폼 이벀트]
      1. ⭐ blur : νŠΉμ • 폼 μš”μ†Œμ—μ„œ 포컀슀λ₯Ό μžƒμ—ˆμ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€. (aνƒœκ·Έ 포함)
      2. ⭐ change : λͺ©λ‘μ΄λ‚˜ 체크 μƒνƒœ 등이 λ³€κ²½λ˜λ©΄ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
                      (input, selet, checkbox, textarea νƒœκ·Έμ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.)
      3. focus : νŠΉμ • 폼 μš”μ†Œμ—μ„œ ν¬μ»€μŠ€κ°€ λ†“μ˜€μ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      4. reset : 폼이 λ¦¬μ…‹λ˜μ—ˆμ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      5. submit : submit λ²„νŠΌμ„ ν΄λ¦­ν–ˆμ„ λ•Œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.

πŸ—¨οΈ μ†μœΌλ‘œ 직접 κ³΅λΆ€ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μž‘μ„±ν•œ κΈ€μ΄λžλ‹ˆλ‹€ !
βœ–οΈ
μ•žμœΌλ‘œλ„ μ—΄μ‹¬νžˆ κ³΅λΆ€ν•΄μ„œ λ§Žμ€ λ‚΄μš©μ„ κ³΅μœ ν•˜κ² μŠ΅λ‹ˆλ‹€ :)

profile
🎧 α΄˜ΚŸα΄€ΚΙͺΙ΄Ι’: UXUI (Feat: coding) ─────────βšͺ───── 𝟸:𝟷𝟾 / 𝟹:πŸ»πŸΌβ € γ…€ ◄◄⠀▐▐⠀►► ───○ πŸ”Š

0개의 λŒ“κΈ€