2021-12-03 TIL

λ””μ•„Β·2021λ…„ 12μ›” 3일
1

멋사FE슀쿨1κΈ°

λͺ©λ‘ 보기
15/20
post-thumbnail

🦁 Day26

πŸ’» 였늘 배운 것

1. 데이터 νƒ€μž…

μ›μ‹œ νƒ€μž… primitive type

number, string, null, boolean, undefined

객체 νƒ€μž…(μ°Έμ‘° νƒ€μž…) reference type

값을 μ°Έμ‘°ν•œλ‹€. 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” μ£Όμ†Œλ₯Ό 바라본닀.


2. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ 객체

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 객체지ν–₯ 언어이닀.
클래슀 κ°œλ…μ΄ 생기기 이전인 ES6 μ΄μ „μ—λŠ” newλΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•  수 μžˆμ—ˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ κ°μ²΄λŠ” 두가지가 μžˆλ‹€.

  • 데이터 νƒ€μž…μœΌλ‘œμ„œμ˜ 객체 - keyκ°’, value값을 쌍으둜 ν•˜λŠ” μžλ£Œν˜•
  • 클래슀 μΈμŠ€ν„΄μŠ€λ‘œμ„œμ˜ 객체
// 클래슀 μΈμŠ€ν„΄μŠ€λ‘œμ„œμ˜ 객체

'μ•ˆλ…•ν•˜μ„Έμš”' // λ¦¬ν„°λŸ΄ ν‘œν˜„μ‹. λ¦¬ν„°λŸ΄μ΄λž€ μ½”λ“œμ— λ³΄μ—¬μ§€λŠ” κ·ΈλŒ€λ‘œλ₯Ό λ§ν•œλ‹€.
	   // μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 λ³΄μ΄λŠ” κ·ΈλŒ€λ‘œ λ¬Έμžμ—΄λ‘œ 받아듀인닀.

new String('μ•ˆλ…•ν•˜μ„Έμš”') // new ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œ 객체 생성.

let str = new String('μ•ˆλ…•ν•˜μ„Έμš”') // μƒμ„±μž ν•¨μˆ˜λ₯Ό 톡해 λ§Œλ“¦.
// μƒμ„±μž ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ λ§Œλ“€μ–΄μ§„ 결과물을 μΈμŠ€ν„΄μŠ€ 라고 ν•œλ‹€. μ—¬κΈ°μ„œ str이 μΈμŠ€ν„΄μŠ€μ΄λ‹€.
// μƒμ„±μž ν•¨μˆ˜λ₯Ό JSμ—μ„œλŠ” νƒ€μž… μƒμ„±μž. 클래슀λ₯Ό νƒ€μž…μ΄λΌκ³  λΆ€λ₯Έλ‹€.
// 객체 = μΈμŠ€ν„΄μŠ€

myStr = 'hi';
console.log(myStr); // hi
		    // myStrλ₯Ό μ„ μ–Έν•œ 적이 μ—†λŠ”λ°λ„ 값이 좜λ ₯λœλ‹€.
		    // ν‚€μ›Œλ“œκ°€ μ—†λŠ” 할당문은 μ•žμ— varκ°€ μƒλž΅λ˜μ–΄ μ„ μ–Έλœ 것이닀. 
                    // var,let,const ν‚€μ›Œλ“œλ₯Ό 쓰지 μ•Šμ•„λ„ λ³€μˆ˜κ°€ 생성이 λœλ‹€..!
                    // let, constλŠ” μƒλž΅ν•  수 μ—†λ‹€!
	
'hello' // 객체, μΈμŠ€ν„΄μŠ€, λ¬Έμžμ—΄, λ¦¬ν„°λŸ΄, μœ μ‚¬λ°°μ—΄κ°μ²΄
		// κ°μ²΄λΌμ„œ λ‚΄μž₯ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 것이닀.
'hello'.length // 5

Object.getOwnPropertyDescriptors('hello'); // 'hello' 객체 μžμ‹ μ˜ 속성에 λŒ€ν•œ 속성 μ„€λͺ…μž λ°˜ν™˜

3. this

let myObj = {
    val1: 100,
    func1: function(){ console.log(this)}
                    // thisλŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ 객체λ₯Ό λ§ν•œλ‹€.
                    // thisκ°€ κ°€λ¦¬ν‚€λŠ”κ±΄ func1() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ myObj이닀.
}

myObj.func1(); // this



function aboutThis(){
	console.log(this);  // μ—¬κΈ°μ„œ thisλŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ 객체λ₯Ό 가리킨닀. μ—¬κΈ°μ„œλŠ” window이닀.
}

aboutThis(); // Window {window: Window, self: Window, document: document, name: '', location: Location, …}
            // window λŠ” μ „μ—­ 객체이닀. 'μ „μ—­'μ΄λž€ μ–΄λ””μ„œλ“  μ ‘κ·Όν•  수 μžˆλŠ” 곡간을 μ˜λ―Έν•œλ‹€. htmlλ¬Έμ„œμ˜ 전체 곡간에 μ ‘κ·Όν•  수 μžˆλŠ” μ΅œμƒμœ„μ— μžˆλŠ” 객체.
            // window.aboutThis()와 κ°™λ‹€. 즉, aboutThis()λŠ” window 객체 μ•ˆμ— μ„ μ–Έλœ λ©”μ†Œλ“œ,ν•¨μˆ˜

4. μ „μ—­, ν•¨μˆ˜ μŠ€μ½”ν”„

// μ „μ—­ μŠ€μ½”ν”„
var val1 = 'hi'; // μ „μ—­λ³€μˆ˜. 수λͺ… λ²”μœ„λŠ” κΈ€λ‘œλ²Œμ΄λ‹€.
console.log(val2) // ReferenceError: myVal2 is not defined

function myFunc(){
  // ν•¨μˆ˜ μŠ€μ½”ν”„
  var val2 = "hello"; // μ§€μ—­λ³€μˆ˜. 수λͺ… λ²”μœ„λŠ” ν•¨μˆ˜ λ‚΄λΆ€.
                      // ν•¨μˆ˜ λ‚΄λΆ€λŠ” νμ‡„λ˜μ–΄μžˆλ‹€.
                        // return val2λ₯Ό ν•˜μ§€ μ•ŠμœΌλ©΄ ν•¨μˆ˜ λ°–μ—μ„œλŠ” val2의 값을 μ ˆλŒ€ μ•Œ 수 μ—†λ‹€.
  
}

5. ν΄λ‘œμ €

  • νμ‡„λœ κ³΅κ°„μ˜ 데이터에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ ν…Œν¬λ‹‰
  • ν΄λ‘œμ € ν•¨μˆ˜: νμ‡„λœ 곡간에 μ ‘κ·Όν•  κΆŒν•œμ„ 가진 ν•¨μˆ˜
function myFunction(){
  var val1 = "hello";
  return { getVal1 : function(){return val1} }
            // getVal1의 value값인 ν•¨μˆ˜λ₯Ό ν΄λ‘œμ € ν•¨μˆ˜ 라고 ν•œλ‹€.
}

let result = myFunction(); 

result; // {getVal1: Ζ’}

result.getVal1(); // 'hello'

ν΄λ‘œμ €λ₯Ό μ™œ μ‚¬μš©ν•˜λŠ”κ°€?

λ³€μˆ˜μ˜ 쀑볡 적용 방지, λ³€μˆ˜ 보호λ₯Ό μœ„ν•΄ ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œλ§Œ κ°’μ˜ 변경을 ν—ˆμš©ν•œλ‹€.

profile
μ–Όλ ˆλ²Œλ ˆ ν”„λ‘ νŠΈμ—”λ“œ 개발자

2개의 λŒ“κΈ€

comment-user-thumbnail
2021λ…„ 12μ›” 4일

μˆ˜μ—… 쀑에 κΌΌκΌΌν•˜κ²Œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ‹œλŠ” λ‹€λ‹˜λ‹˜ 정말 λŒ€λ‹¨ν•΄μš”,, μ €λŠ” λ”°λΌκ°€λŠλΌ ν•„κΈ°λŠ” ν›„λ‹₯λ‹₯ ν•˜κ±°λ“ μš”..πŸ˜… κ°œλ…λ“€μ΄ μ£Όμ„μœΌλ‘œ 잘 μ •λ¦¬λ˜μ–΄μžˆμ–΄μ„œ 쒋은 것 κ°™μ•„μš”!! μΌμš”μΌλ„ νž˜λ‚΄μ„œ 같이 λ‹¬λ €λ°”μš© ( β€’Μ€ Ο‰ ‒́ )✧

1개의 λ‹΅κΈ€