Skip to content

Latest commit

ย 

History

History
584 lines (353 loc) ยท 13.6 KB

File metadata and controls

584 lines (353 loc) ยท 13.6 KB

Javascript

Javascript ๋ž€?

  • ์›น ๋ธŒ๋ผ์šฐ์ € ์ œ์–ด

  • ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋– ํ•œ ๋™์ž‘์„ ํ•  ๋•Œ ์–ด๋– ํ•œ ๋™์ž‘์ด ์ผ์–ด๋‚˜๋„๋ก ํ•  ๋•Œ ์‚ฌ์šฉ

  • ํƒˆ ์›น ๋ธŒ๋ผ์šฐ์ €

    • ์ด์ œ๋Š” ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด๋กœ๋งŒ ์“ฐ์ด์ง€ ์•Š์Œ
    • ์›น ์„œ๋ฒ„ ๋™์ž‘ ๋„๊ตฌ (node.js - ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ)
  • ํ™˜๊ฒฝ

    • JavaScript ๊ฐ€ ~('Hello world'); ๋ช…๋ น์„ ๋‚ด๋ฆด ๋•Œ,
      • ์›น ๋ธŒ๋ผ์šฐ์ € : alert
      • node. js : write
      • SpreadSheet : msgBox

    ์œ„์™€ ๊ฐ™์ด, ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์— ์‚ฌ์šฉ๋˜๋ฉฐ ๊ฐ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ช…๋ น์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ

  • js ์‹คํ–‰

    • script ํƒœ๊ทธ ๋‚ด๋ถ€์— javascript ์ฝ”๋“œ ์ž‘์„ฑ
    • ์ค„๋ฐ”๊ฟˆ ๋˜๋Š” ; ์€ ๋ช…๋ น์ด ๋๋‚ฌ์Œ์„ ์˜๋ฏธ

์ˆซ์ž์™€ ๋ฌธ์ž

์ˆ˜์˜ ํ•จ์ˆ˜์™€ ์—ฐ์‚ฐ

	Math.pow(3,2);		// 9
	Math.round(10.6);	// 11 (๋ฐ˜์˜ฌ๋ฆผ)
	Math.ceil(10.2);	// 11 (์˜ฌ๋ฆผ)
	Math.floor(10.2);	// 10 (๋‚ด๋ฆผ)
	Math.random();		// ์†Œ์ˆ˜๊ฐ’ ๋‚œ์ˆ˜ (< 1)
	100*Math.random();	// ์†Œ์ˆ˜๊ฐ’ ๋‚œ์ˆ˜ (< 100)

๋ฌธ์ž ์ถœ๋ ฅ๊ณผ ์—ฐ์‚ฐ

 	\  : \๋’ค์˜ ๋ฌธ์ž๋Š” ๊ธฐ๋Šฅ์ ์ธ ์ธก๋ฉด์ด ์•„๋‹Œ, ๋‹จ์ˆœ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰
 	\n : ๋ฌธ์ž์—ด ๊ฐœํ–‰
 	
 	typeof 1 		// "number"
 	typeof "1"		// "string"
 	"1" + "1"		// "11"
 	
 	"code".indexOf("o")		// 1 (๋ฌธ์ž์˜ index ๊ฒ€์ƒ‰)

๋ฌธ์ž ๊ด€๋ จ ํ•จ์ˆ˜

	"jongho".toUpperCase();		// "JONGHO"
	let a = ["lee", "jong", "ho"];
	alert(a.length);			// 3

์—ฐ์‚ฐ์ž

  • ์—ฐ์‚ฐ์ž : ์–ด๋– ํ•œ ์ž‘์—…์„ ์ง€์‹œํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐํ˜ธ

  • ๋“ฑํ˜ธ

      alert(1 == '1')			// true  (๋‚ด์šฉ๋งŒ ๋น„๊ต)
      alert(1 === '1');			// false (๋ฐ์ดํ„ฐ ํƒ€์ž…๊นŒ์ง€ ๋น„๊ต)
      alert(null == undefined);	// true	(undefined : ๊ฐ’์ด ์—†์Œ, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ์ƒํ™ฉ)
      alert(null === undefined);	// false
      alert(true == 1);			// true	(js์—์„œ true๋Š” 1๋กœ ๊ฐ„์ฃผ)
      alert(true == '1');		// true
      alert(true === 1);		// false
      alert(true === '1');		// false
     	
      alert(0 === -0);			// true (0๊ณผ -0์€ ๊ฐ™๋‹ค)
      alert(NaN === NaN);		// false (NaN์€ ๊ณ„์‚ฐ ๋ถˆ๊ฐ€๋Šฅ์ด๋ฏ€๋กœ false)
    
  • ๋ถ€์ •๊ณผ ๋ถ€๋“ฑํ˜ธ

     alert(1!=2);		// true
     alert(1!=1);		// false
     ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, !== ๋„ ์žˆ๋‹ค.
    
  • ๋น„๊ต ์—ฐ์‚ฐ์ž

    alert(10>1);	// true
    alert(10>10);	// false
    alert(20<=20);	// true;
    
  • ์กฐ๊ฑด๋ฌธ / ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž / ๋ฐ˜๋ณต๋ฌธ์ƒ๋žต

์ถœ๋ ฅ ๋ฐฉ์‹


alert

  • ๊ฒฝ๊ณ ์ฐฝ ์ถœ๋ ฅ

    prompt

  • alert์™€ ๋น„์Šทํ•˜๊ฒŒ ๊ฒฝ๊ณ ์ฐฝ์ด ๋–  ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ, ์ž…๋ ฅ์ฐฝ์— ์ž…๋ ฅ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๊ฐ’์ด ๋„˜์–ด๊ฐ

    ex) alert(prompt("๋‹น์‹ ์˜ ๋‚˜์ด๋Š”?")*2); // 20 ์ž…๋ ฅ

    โ€‹ >> alert(20*2); // ๊ฒฝ๊ณ ์ฐฝ์— 40 ์ถœ๋ ฅ

    ex2) id=prompt("์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.')

    โ€‹ if(id=='leejh' && pw='1111') { alert('์ •๋ณด๊ฐ€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. '+id+'๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.') }

    โ€‹ else { alert('์ •๋ณด๊ฐ€์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.') }

document.write

  • ์›น ํŽ˜์ด์ง€์— ์ง์ ‘ ํ‘œ์‹œ

Chrome Debugger


 chrome ๊ฐœ๋ฐœ์ž๋„๊ตฌ - Sources ์—์„œ line์— breakpoint ์„ค์ •
 ์„ค์ • ํ›„ ์‹คํ–‰ํ•˜๋ฉด breakpoint์—์„œ ๋ฉˆ์ถ”๋Š”๋ฐ,
  - |> ํด๋ฆญ ์‹œ, ์ดํ›„ ์ „์ฒด ์‹คํ–‰
  - โ†“  ํด๋ฆญ ์‹œ, ๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ ํ•จ์ˆ˜ ๋‚ด์˜ ์ฝ”๋“œ๋กœ ๋“ค์–ด๊ฐ or ๋‹ค์Œ ๋ช…๋ น ์‹คํ–‰

ํ•จ์ˆ˜(function)


  • ํ•จ์ˆ˜ : ํ•˜๋‚˜์˜ ๋กœ์ง์„ ์žฌ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ
    • ์žฌ์‚ฌ์šฉ์„ฑ + ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด + ๊ฐ€๋…์„ฑ
 function ํ•จ์ˆ˜๋ช… ( [param...[,param]] ){	// ํ•จ์ˆ˜ ์ •์˜
 	์ฝ”๋“œ
 	return ๋ฐ˜ํ™˜๊ฐ’				// ์ถœ๋ ฅ
 }
 
 ํ•จ์ˆ˜๋ช…(argument);				// ํ•จ์ˆ˜ ํ˜ธ์ถœ
  • ํ•จ์ˆ˜ ์ •์˜

    function numbering ( ) { } // ์ด ์ •์˜๋ฐฉ๋ฒ•๊ณผ

    numbering = function () { } // ์ด ์ •์˜๋ฐฉ๋ฒ•์€ ๊ฐ™์Œ

    โ€‹ ใ„ด ๋‘˜ ๋ชจ๋‘ numbering(); ์œผ๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ

  • ์ต๋ช… ํ•จ์ˆ˜

    ( function ( ){ } ) ( ); // ํ•จ์ˆ˜ ์ •์˜ ํ›„ ๊ด„ํ˜ธ๋กœ ๋ฌถ๊ณ , (); ๋กœ ๋ฐ”๋กœ ์„ ์–ธ ๊ฐ€๋Šฅ

    โ€‹ // ์ด๋ฆ„ ์—†์ด ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ

๋ฐฐ์—ด


  • let member=[ 'lee', 'jong', 'ho'];

    • member[0], member[1] ๋“ฑ์œผ๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
  • ํ•จ์ˆ˜์™€ ๋ฐฐ์—ด

  function (get_members()) {
  	return [ 'lee', 'jong', 'ho' ];			// ๋ฐฐ์—ด ์ž์ฒด๋ฅผ ๋ฆฌํ„ด
  }
  
  let members=get_members();		// ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ์ƒ์„ฑ
  document.write(members[1]);		// ๋ฐ”๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•˜๊ธฐ

    ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
    let li = ['a','b','c'];
    
    li.push('e');					// push ํ•จ์ˆ˜๋กœ ๋ฐฐ์—ด์— ์ธ์ž ํ•˜๋‚˜ ์ถ”๊ฐ€
    li = li.concat( ['f','g'] );	// concat ํ•จ์ˆ˜๋กœ ๋ฐฐ์—ด(์—ฌ๋Ÿฌ ์ธ์ž) ์ถ”๊ฐ€
    li.splice(3,1,'d');				// 3๋ฒˆ์งธ index์— 1๊ฐœ ์›์†Œ('e')๋ฅผ ์‚ญ์ œํ•˜๊ณ  'd'๋ฅผ ๋„ฃ์–ด๋ผ
    										ใ„ด index๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
    										ใ„ด splice์˜ return๊ฐ’์€ ์‚ญ์ œ๋œ ์›์†Œ ['e']
    li.unshift('z');				// unshift ํ•จ์ˆ˜๋กœ ๋ฐฐ์—ด ๋งจ ์•ž์— ์ถ”๊ฐ€
    
    ์ถ”๊ฐ€ ํ›„ : document.write(li);	  // ["z","a","b","c","d","f","g"]
    
    ๋ฐ์ดํ„ฐ ์‚ญ์ œ
    let del = ['a','b','c'];
    
    del.shift();					// ๋งจ ์•ž ์›์†Œ ์‚ญ์ œ, return ๊ฐ’ : ["a"]
    del.pop();						// ๋งจ ๋’ค ์›์†Œ ์‚ญ์ œ, return ๊ฐ’ : ["c"]
    
    ์‚ญ์ œ ํ›„ : document.write(del);	  // ["b"]
    
    ๋ฐ์ดํ„ฐ ์ •๋ ฌ
    let li = ['c','d','b','a'];
    
    li.sort();						// ['a','b','c','d']
    li.reverse();					// ['d','c','b','a']
    
    function sortNumber(a,b){ return a-b; }		// sort์ •๋ ฌ ๊ตฌํ˜„
    li.sort(sortNumber);						// ์‹คํ–‰
    

๊ฐ์ฒด (Dictionary)


  • ๊ฐ์ฒด (dictionary)

    • ์—ฐ๊ด€๋ฐฐ์—ด(associative array), ๋งต(map), ๋”•์…”๋„ˆ๋ฆฌ(Dictionary) ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…
    • ๊ฐ์ฒด ์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„๊ณผ ์—ฐ๊ด€
     ex) let grades = {'lee' : 10, 'jong' : 5, 'ho' : 15};
     	 grades['jong']				// 5
     	 grades.jong				// 5
     	 grades['jo'+'ng']			// 5
     	
     	์œ„ ์˜ˆ์ œ์—์„œ ๋ฌธ์ž๋Š” key, ๊ฐ’์€ value ๊ฐ€ ๋จ
    
    ๋ฐฐ์—ด๊ณผ ์ฐจ์ด์  - ๋Œ€๊ด„ํ˜ธ๊ฐ€ ์•„๋‹Œ ์ค‘๊ด„ํ˜ธ๋กœ ํ‘œ๊ธฐ
    			- ์ธ๋ฑ์Šค๋ฅผ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๊ฐ์ฒด ์‚ฌ์šฉ
    
  • ๊ฐ์ฒด์™€ ๋ฐ˜๋ณต๋ฌธ (for-in, for-each, for-of)

    • ๋ฐฐ์—ด์€ index๊ฐ€ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๊ฐ์ฒด๋Š” key-value ํ˜•ํƒœ์ž„ - ํŠน๋ณ„ํ•œ for๋ฌธ ํ•„์š”
  • for-in ๋ฐ˜๋ณต๋ฌธ : key๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ

    let grades = {'lee' : 10, 'jong' : 5, 'ho' : 15};
    <ul>
        for(key in grades){		// ๋ณ€์ˆ˜ in ๊ฐ์ฒด
            document.write("<li>key : "+key+" value : "+grades[key]+"</li>");
      }
    </ul>
    • foreach ๋ฐ˜๋ณต๋ฌธ

      
      
    • for-of ๋ฐ˜๋ณต๋ฌธ

  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

    var grades={
    	'list' : {'egoing' : 10, 'k8805' : 8, 'sorialgi' : 80},
    	'show' : function(){
    		alert('Hello World');
    	}
    	'show_this' : function(){
    		alert(this);				// this : ํ•จ์ˆ˜๊ฐ€ ์†Œ์†๋œ ๊ฐ์ฒด(grades)๋ฅผ ๊ฐ€๋ฆฌํ‚ด
    		console.log(this.list);		// this๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” grades ์•ˆ์˜ list ๋ฐฐ์—ด
    		
    		for(let name in this.list){
    			console.log(name, this.list[name]);		// ,๋ฅผ ํ†ตํ•ด ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐ’ ์ถœ๋ ฅ
    		}
    	}
    }
    grades['show']();				// js์—์„œ๋Š” ํ•จ์ˆ˜๋„ ๊ฐ’์ด๋ฏ€๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
    								// == grades.show();

๋ชจ๋“ˆ


  • ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ€๋ถ„๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ์„ฑ์„ ๋†’์ด๊ณ , ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•

    • ๋ชจ๋“ˆํ™”๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆˆ๋‹ค
  • ์žฅ์ 

    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์žฌํ™œ์šฉ ๊ฐ€๋Šฅ
    • ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋ฉด ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘์ด ๊ฐœ์„ 
    • ์ฝ”๋“œ ์ˆ˜์ • ์‹œ ํ•„์š”ํ•œ ๋กœ์ง์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
    • ํ•„์š”ํ•œ ๋กœ์ง๋งŒ ๋กœ๋“œํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๊ฐ์†Œ
    • ํ•œ ๋ฒˆ ๋‹ค์šด๋œ ๋ชจ๋“ˆ์€ ์›น๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ >> ๋™์ผ ๋กœ์ง ๋กœ๋“œ ์‹œ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ์ ˆ์•ฝ (๋ธŒ๋ผ์šฐ์ €๋งŒ ํ•ด๋‹น)
  • ์ˆœ์ˆ˜ํ•œ js์—๋Š” ๋ชจ๋“ˆ ๊ฐœ๋…์ด ๋ถ„๋ช…ํ•˜๊ฒŒ ์กด์žฌํ•˜์ง€ ์•Š์Œ

    • ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ชจ๋“ˆํ™” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ„ / ์—ฌ๊ธฐ์„œ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•ด ์•Œ์•„๋ด„
  • ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

	<script src = "greeting.js"></script> 
	// ์ด ๋ถ€๋ถ„์€ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ชจ๋“ˆํ™”๋œ greeting.js ํŒŒ์ผ์„ ์ฝ์–ด์™€ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์ง
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋„๋ก ์ž˜ ์ •๋ฆฌํ•œ ์ผ๋ จํ•œ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ (๋ชจ๋“ˆ๊ณผ ๋น„์Šท)
    • ex) jQuery

UI์™€ API


  • API ๋ž€?

    • Application Programming Interface
    • ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ์—์„œ ์ œ๊ณต๋˜๋Š” ์กฐ์ž‘ ์žฅ์น˜
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ํ†ตํ•ด ์กฐ์ž‘ ๊ฐ€๋Šฅ
      • ์ฃผ์†Œ์ฐฝ์— javascript:alert("Hello World!"); ์ž…๋ ฅ ์‹œ Hello World! ๋ผ๋Š” ๊ฒฝ๊ณ ์ฐฝ์ด ๋œธ
      • ๋ธŒ๋ผ์šฐ์ €๋กœ ํ•˜์—ฌ๊ธˆ alert๋ฅผ ํ†ตํ•ด ๊ฒฝ๊ณ ์ฐฝ์ด ๋œจ๋„๋ก ๋ช…๋ นํ•˜๋Š” Interface
  • UI ๋ž€?

    • User Interface
    • ์‚ฌ๋žŒ๊ณผ ์ปดํ“จํ„ฐ ์‚ฌ์ด์˜ ๋Œ€๋ฉด ์ ‘์  / ์ค‘๊ณ„์ž ์—ญํ• 
  • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” UI๋ฅผ ํ†ตํ•ด, ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด API๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐ์ž‘ํ•จ

์ •๊ทœํ‘œํ˜„์‹


  • ๋ฌธ์ž์—ด์—์„œ ํŠน์ •ํ•œ ๋ฌธ์ž๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๋„๊ตฌ

  • ์ปดํŒŒ์ผ : ๋ฌธ์ž๋ฅผ ํŒ๋‹จํ•˜๊ฑฐ๋‚˜, ํŒจํ„ด์„ ์ฐพ๋Š” ๊ฒƒ

    • ํŒจํ„ด ์ฐพ๋Š” ๋ฒ• 2๊ฐ€์ง€

      1. let pattern = /a/;				// ์Šฌ๋ž˜์‹œ ์‚ฌ์ด์˜ a๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ํŒจํ„ด
      
      2. let pattern = new RegExp('a');	// ์ƒˆ ์ •๊ทœํ‘œํ˜„์‹ ๊ฐ์ฒด์— ์ฐพ์„ ํŒจํ„ด์„ ๋„ฃ๊ธฐ 
  • ์‹คํ–‰ : ์–ด๋– ํ•œ ์ž‘์—…์„ ๊ตฌ์ฒด์ ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ

DOM๊ณผ jQuery

DOM

  • DOM์€ ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model) ์˜ ์•ฝ์ž๋กœ js๊ฐ€ ์›น ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉ

  • DOM tree : ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” HTML ๋ฌธ์„œ๋ฅผ ์ฝ์„ ๋•Œ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งˆ์น˜ ๋‚˜๋ฌด์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ํ•ด์„

    						<html>
    			 		 	 โ†™ โ†˜
    					<head>   <body>
    					   โ†“	  โ†™ โ†˜ 
    					<title>  <h1> <p>
    
  • ์•„์ด๋””๋ฅผ ์‚ฌ์šฉํ•œ ์—˜๋ฆฌ๋จผํŠธ ์‹๋ณ„ํ•˜๊ธฐ

    // id ์†์„ฑ ๋„ฃ๊ธฐ
    <h1 id="main-heading"> ์•ˆ๋…•ํ•˜์„ธ์š”! </h1>
    
    // document.getElementById() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด id ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ
    <script>
    	let headingElement = document.getElementById("main-heading");
        console.log(headingElement.innerHTML);		// ๋ณ€์ˆ˜.innerHTML ์„ ํ†ตํ•ด ๋‚ด๋ถ€ ๋ฌธ์ž ๊ฐ€์ ธ์˜ด
    </script>

jQuery

  • jQuery๋Š” $ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ HTML ์—˜๋ฆฌ๋จผํŠธ ์„ ํƒ

    • $ ํ•จ์ˆ˜๋Š” ์„ ํƒ์ž ๋ฌธ์ž์—ด(selector string) ์ธ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ „๋‹ฌ
jQuery๋ฅผ ์ด์šฉํ•œ ์ œ๋ชฉ ํ…์ŠคํŠธ ๋ฐ”๊พธ๊ธฐ
<script src="https://code.jquery.com/jquery-3.4.1.min.js"> </script>

<body>
    <h1 id="main-heading"> ์•ˆ๋…•ํ•˜์„ธ์š”! </h1>

	<script>
		let newHeadingText = prompt("์ƒˆ๋กœ์šด ์ œ๋ชฉ์„ ์ž…๋ ฅํ•˜์„ธ์š”.");
        $("#main-heading").text(newHeadingText);
	</script>
</body>
jQuery๋ฅผ ์ด์šฉํ•ด ์—˜๋ฆฌ๋จผํŠธ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ
<script>
    for(let i=0; i<3; i++){
        let hobby = prompt("์ทจ๋ฏธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”!");
        $("body").append("<p>"+ hobby +"</p>")
    }
</script>
jQuery๋ฅผ ์‚ฌ์šฉํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜
<script>
    $("h1").text("ํŽ˜์ด๋“œ์•„์›ƒ").fadeOut(3000).fadeIn(2000);
    // chaining : ํ•œ ์ค„์— ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ
    $("h2").text("์Šฌ๋ผ์ด๋“œ์—…").slideUp(3000).slideDown(2000);
</script>

Interactive Programming

setTimeout์„ ์ด์šฉํ•œ ์ฝ”๋“œ ์ง€์—ฐ
  • setTimeout(ํ•จ์ˆ˜, ๋ฐ€๋ฆฌ์ดˆ);
    • ํ•จ์ˆ˜ : ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜
<script>
    let timeUp = function(){
        alert("์‹œ๊ฐ„ ๋!");
    };

	setTimeout(timeUp, 3000);
    clearTimeout(timeUp);		// ํƒ€์ž„์•„์›ƒ ์ทจ์†Œํ•˜๊ธฐ
</script>
setInterval์„ ์‚ฌ์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜๊ธฐ
  • setInterval(ํ•จ์ˆ˜, ๋ฐ€๋ฆฌ์ดˆ);
    • ํ•จ์ˆ˜ : ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋ฐ€๋ฆฌ์ดˆ๋งˆ๋‹ค ํ˜ธ์ถœํ•  ํ•จ์ˆ˜
<script>
    let counter = 1;
    let printMessage = function(){
        console.log("๊ธฐ๋ก์„ ์‹œ์ž‘ํ•œ ์ง€ "+ counter
                   +" ์ดˆ ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.");
        counter++;
    };
    
    let intervalId = setInterval(printMessage, 1000);
    
    clearInterval(intervalId);		// interval ์ทจ์†Œํ•˜๊ธฐ
</script>

์‚ฌ์šฉ์ž ํ–‰๋™์— ๋ฐ˜์‘ํ•˜๊ธฐ (Event Handler)

ํด๋ฆญ์— ๋ฐ˜์‘ํ•˜๊ธฐ
<script>
	let clickHandler = function(event){
        console.log("Click! "+ event.pageX + " " + event.pageY);
        // ๋Œ€๊ฐœ x์™€ y๋Š” ํ™”๋ฉด์˜ ์™ผ์ชฝ ์ƒ๋‹จ์„ (0,0)์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.
    };
    
    $("h1").click(clickHandler);
</script>
๋งˆ์šฐ์Šค ์ด๋™ ์ด๋ฒคํŠธ
<script src="https://code.jquery.com/jquery-3.4.1.min.js"> </script>
<script>
	$("html").mousemove(function(event){		// mousemove(ํ•ธ๋“ค๋Ÿฌ) ํ•จ์ˆ˜
        $("#heading").offset({
            left: event.pageX,
            top : event.pageY
        });
    });
</script>
ํด๋ฆญํ•œ ์œ„์น˜์—์„œ ํƒ€๊ฒŸ ์œ„์น˜ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐํ•˜๊ธฐ
<script src="https://code.jquery.com/jquery-3.4.1.min.js"> </script>
<script>
    let width = 400;
    let height = 400;
    
    let target = {
        x:getRandomNumber(width);
        y:getRandomNumber(height);		// ์‹œ์ž‘ ์‹œ๋งˆ๋‹ค ํƒ€๊ฒŸ ์œ„์น˜ ๋žœ๋ค๊ฐ’
    }
    
	let getDistance = function(event, target){
        var diffX = event.offsetX - target.X;	// offsetX,Y : ํด๋ฆญ ์œ„์น˜ ์ขŒํ‘œ ์–ป๊ธฐ
        var diffY = event.offsetY - target.Y;
        return Math.sqrt((diffX * diffX) + (diffY * diffY));
    };
</script>