SlideShare a Scribd company logo
1 of 60
JavaScript
ECMA-262 3rd Edition (1999.12)
1. JavaScript Basic
2. Prototype
3. JSON
4. Ajax
OVERVIEW
JAVASCRIPT BASIC
Chapter 1
JavaScript
๏ƒผ ์ถ”์ฒœ๋„์„œ
JavaScript
๏ƒผ JavaScript, JScript, Java
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์™€ ๋‹ค๋ฅธ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. Syntax๋งŒ Java์™€ ์œ 
์‚ฌํ•œ ๋ถ€๋ถ„์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋Š” Java์™€ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๊ณ ,
C์™€ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
JScript๋Š” IE ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.
JavaScript๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ํ•˜๋ฉด J์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
ํ‘œ์ค€ ์Šคํฌ๋ฆฝํŠธ๋Š” ECMA-262 Script์ž…๋‹ˆ๋‹ค. Flash Action
Script๋ผ๊ณ  ๋ถ€๋ฅด๋Š” Script ์—ญ์‹œ ECMA 262 Script๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
JavaScript
๏ƒผ Automatic Semicolon
JavaScript์—์„œ๋Š” Semicolon(;)์ด ์ƒ๋žต๋œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ
Semicolon์„ ๋ถ™์—ฌ ์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์ข‹์€ ์Šต๊ด€์ด ์•„๋‹ˆ๋ฏ€๋กœ
Semicolon์„ ๋ถ™์—ฌ ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
return
true;
์˜ˆ์ œ1
return;
true;
์˜ˆ์ œ2
JavaScript
๏ƒผ String Concatenation Operator โ€˜+โ€™
+ ์—ฐ์‚ฐ์ž๋ฅผ ์ˆซ์ž์— ์‚ฌ์šฉํ•˜๋ฉด, ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ๋ฌธ์ž์—ด
์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‘ ๋ฌธ์ž์—ด์„ ํ•ฉ์นฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ž์—ด์ด ์ˆซ์ž ๋ฌธ๋งฅ์— ์‚ฌ์šฉ๋˜๋ฉด ๋ฌธ์ž์—ด์€ ์ˆซ์ž๋กœ ๋ณ€ํ™˜๋ฉ
๋‹ˆ๋‹ค.
โ€œ100โ€ + 10
100 + โ€œbottles of beerโ€
โ€œโ€ + 10
๊ฒฐ๊ณผ : โ€œ10010โ€
๊ฒฐ๊ณผ : โ€œ100 bottles of beerโ€
๊ฒฐ๊ณผ : โ€œ10โ€
โ€œ11โ€ * โ€œ2โ€
โ€œ100โ€- 0
๊ฒฐ๊ณผ : 22
๊ฒฐ๊ณผ : 100
์˜ˆ์ œ1
์˜ˆ์ œ2
JavaScript
๏ƒผ Boolean type casting
๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์€ ์‰ฝ๊ฒŒ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํƒ€์ž…์—์„œ ๋ถˆ
๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๊ณ  ๊ทธ ๋ณ€ํ™˜์€ ๋Œ€๊ฐœ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.
์ˆซ์ž ๋ฌธ๋งฅ์—์„œ์˜ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์€ true๋Š” ์ˆซ์ž 1, false๋Š” ์ˆซ์ž 0์œผ๋กœ
๋ณ€ํ™˜๋œ๋‹ค. ๋ฌธ์ž์—ด์—์„œ๋Š” ๋ฌธ์ž์—ด โ€œtrueโ€/โ€œfalseโ€๋กœ ์ž๋™ ๋ณ€ํ™˜๋œ๋‹ค.
๋งŒ์•ฝ ์ˆซ์ž๊ฐ€ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๋ฉด 0์ด๋‚˜ NaN
์ธ ๊ฒฝ์šฐ false ๊ทธ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” true๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ, ๋ฌธ์ž์—ด์ด ๋ถˆ๋ฆฌ
์–ธ ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ณณ์—์„œ๋Š” ๋นˆ ๋ฌธ์ž์—ด์€ false, ๊ทธ ์™ธ๋Š” true๋กœ ๋ณ€
ํ™˜๋œ๋‹ค. null๊ณผ undefined์˜ ๊ฐ’์€ false๋กœ ๋ณ€ํ™˜๋˜๊ณ  ๋„์ด ์•„๋‹Œ ๊ฐ
์ฒด๋‚˜ ๋ฐฐ์—ด, ํ•จ์ˆ˜๋Š” true๋กœ ๋ณ€ํ™˜๋œ๋‹ค.
JavaScript
๏ƒผ Function
function square(x)
{
return x*x ;
}
// ํ•จ์ˆ˜ ์ด๋ฆ„์€ square์ด๊ณ  ์ „๋‹ฌ์ธ์ž x๋ฅผ ๋ฐ›๋Š”๋‹ค.
// ํ•จ์ˆ˜ ์‹œ์ž‘
// ์ „๋‹ฌ์ธ์ž x๋ฅผ ์ œ๊ณฑํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
// ํ•จ์ˆ˜ ๋
JavaScript
๏ƒผ Function literal
์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ ์ •์˜์™€ ๋‹ค๋ฅด๊ฒŒ ํ•จ์ˆ˜๋ฆฌํ„ฐ๋Ÿด์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„
์‹ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
var square = function(x){ return x*x; };
JavaScript
๏ƒผ Closure
uniqueID = (function() {
var id =0;
return function() { return id++; };
})();
// ๋ฐ”๊นฅ ํ•จ์ˆ˜๋Š”
// ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , uniqueID์—๋Š”
// ์ค‘์ฒฉํ•จ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.
JavaScript
๏ƒผ Object
native object
spec์— ์ •์˜๋œ object
built-in object
๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ œ๊ณตํ•˜๋Š” object
host object
๋ธŒ๋ผ์šฐ์ €์˜ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จํ•œ object, ์˜ˆ: DOM
JavaScript
๏ƒผ Object
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ์ƒ์„ฑ์€ new ์—ฐ์‚ฐ์ž์™€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
ํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.
var obj = new Object();
var now = new Date();
JavaScript
๏ƒผ new
new ์—ฐ์‚ฐ์ž๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•œ ์ƒ
์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. new ์—ฐ์‚ฐ์ž๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
์•ž์— ์œ„์น˜ํ•œ๋‹ค. ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
constructor๋Š” ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์ด์–ด์•ผ ํ•˜
๋ฉฐ, ์ „๋‹ฌ์ธ์ž(arguments)๋Š” ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค. ์ „๋‹ฌ์ธ์ž๋Š” ์—†
์„์ˆ˜๋„ ์žˆ๊ณ  2๊ฐœ ์ด์ƒ์ผ๋•Œ๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
new ์—ฐ์‚ฐ์ž๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑํ•˜๋Š” ๊ฐ์ฒด์—๋Š” ์•„๋ฌด๋Ÿฐ ํ”„๋กœํผํ‹ฐ๋„ ์ •์˜
๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.
new constructor(arguments)
JavaScript
๏ƒผ Object literal
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ”„๋กœํผํ‹ฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฐ์ฒด ๋ฆฌํ„ฐ
๋Ÿด ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ์ฒด๋ฆฌํ„ฐ๋Ÿด์€ ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ณ„๋˜๋Š” ํ”„๋กœํผํ‹ฐ
์ด๋ฆ„ / ๊ฐ’ ์Œ๋“ค์ด ๋‹ค์‹œ ์‰ผํ‘œ๋กœ ๋ถ„๋ฆฌ๋œ ๋ชฉ๋ก์ด๋‹ค.
var point={x:2.3, y:-1.2};
var rectangle = { upperLeft: { x: 2, y :2 },
lowerRight: { x:4 , y:4 }
};
JavaScript
๏ƒผ Object and Associative array
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฐ์ฒด ์ ‘๊ทผ ๋ฐฉ๋ฒ•๊ณผ ์—ฐ๊ด€๋ฐฐ์—ด
(associative array) ํ˜•ํƒœ์˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ์ ‘๊ทผ
์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
image๋ผ๋Š” ๊ฐ์ฒด์— width, height ๋‘๊ฐ€์ง€ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค
๋ฉด, ์˜ˆ์ œ 1๊ณผ 2 ๋‘๊ฐ€์ง€ ํ˜•ํƒœ๋กœ image์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ
ํ•˜๋‹ค.
image.width
image.height
image[โ€œwidthโ€]
image[โ€œheightโ€]
JavaScript
๏ƒผ Array
๋ฐฐ์—ด(array)์€ ๋ฒˆํ˜ธ(์ธ๋ฑ์Šค)์™€ ๋ฒˆํ˜ธ์— ๋Œ€์‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค๋กœ ์ด๋ฃจ
์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ๋ฐฐ์—ด์€ ์œ„์—์„œ
์–ธ๊ธ‰ํ•œ ์ ์ด ์žˆ๋Š” ์—ฐ๊ด€๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์ธ๋ฐ ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด์€
์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜๋กœ ์ธ๋ฑ์‹ฑ ๋˜๋Š” ๋ฐ˜๋ฉด ์—ฐ๊ด€๋ฐฐ์—ด์€ ๋ฌธ์ž์—ด๋กœ ์ธ๋ฑ
์‹ฑ๋œ๋‹ค. ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด ํ˜•ํƒœ ๋ง๊ณ ๋Š” ๋‹ค์ฐจ์› ๋ฐฐ์—ด
์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ ์„ ์œ ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
๋Š” ํƒ€์ž…์ œ์•ฝ์ด ์—†๋Š” ์–ธ์–ด์ด๋ฏ€๋กœ ๋ฐฐ์—ด ๋‚ด ์›์†Œ๋“ค์ด ๋ชจ๋‘ ๋™์ผํ•œ ํƒ€
์ž…์„ ๊ฐ€์งˆ ํ•„์š”๋Š” ์—†๋‹ค.
JavaScript
๏ƒผ Array
๋ฐฐ์—ด์€ Array() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ƒ์„ฑํ•œ๋‹ค. ๋ฐฐ์—ด ์ƒ์„ฑํ›„ ์–ด๋–ค ์ธ๋ฑ
์Šค์—๋ผ๋„ ์–ผ๋งˆ๋“ ์ง€ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
var arr= new Array();
arr[0] = 10;
arr[1] = โ€œjavascriptโ€;
arr[2] = { x : 10, y : 20};
var arr= new Array(10,โ€javascriptโ€,true,{x:10,y:20});
var arr= new Array(10);
JavaScript
๏ƒผ Array literal
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฆฌํ„ฐ๋Ÿด ๋ฌธ๋ฒ•์„ ์ œ๊ณต
ํ•œ๋‹ค. ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ’๋“ค์˜ ๋ชฉ
๋ก์ด๋‹ค. ๋Œ€๊ด„ํ˜ธ ๋‚ด ๊ฐ’๋“ค์€ 0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฐ์—ด ์ธ๋ฑ์Šค์— ์ฐจ๋ก€๋Œ€
๋กœ ํ• ๋‹น๋œ๋‹ค.
var arr= [10,โ€javascriptโ€, {x:10,y:20}];
var matrix = [[1.2.3],[4,5,6],[7,8,9]];
var base=1000;
var table= [base,base+1.base+2,base+3];
var sparseArray = [1,,,,5];
JavaScript
๏ƒผ undefined
undefined๋Š” ์„ ์–ธ์€ ๋˜์—ˆ์ง€๋งŒ ๊ฐ’์ด ํ• ๋‹น๋œ ์ ์ด ์—†๋Š” ๋ณ€์ˆ˜์— ์ ‘
๊ทผํ•˜๊ฑฐ๋‚˜, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•˜๋Š”
๊ฐ’์ด๋‹ค. undefined๋Š” null๊ณผ ๋™์ผํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์œ ๋…ํ•ด
๋‘์–ด์•ผ ํ•œ๋‹ค.
JavaScript
๏ƒผ null
null์€ ์•„๋ฌด๋Ÿฐ ๊ฐ’๋„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๋Š” ํŠน์ˆ˜ํ•œ ๊ฐ’์ด๋‹ค. ์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€
null๊ฐ’์„ ๊ฐ€์ง€๋ฉด ๊ทธ ๋ณ€์ˆ˜๊ฐ€ ์œ ์š”ํ•œ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด, ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋˜
๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
undefined์™€ null์€ ์„œ๋กœ ๊ตฌ๋ณ„๋˜๋Š” ๊ฐ’์ด์ง€๋งŒ ๋™๋“ฑ์—ฐ์‚ฐ์ž
(equality operator, โ€˜==โ€™)๋Š” ๋‘˜์„ ๊ฐ™์€๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
JavaScript
๏ƒผ typeof
ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์€
โ€œnumberโ€, โ€œstringโ€, โ€œbooleanโ€์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๊ฐ์ฒด, ๋ฐฐ์—ด, null ๊ฐ’
์— ๋Œ€ํ•ด์„œ๋Š” โ€œobjectโ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•จ์ˆ˜๋Š” โ€œfunctionโ€์„ ๋ฐ˜ํ™˜ํ•˜
๊ณ  ์ •์˜๋˜์ง€ ์•Š์€ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด โ€œundefinedโ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ”ผ
์—ฐ์‚ฐ์ž๋กœ Number, String, Boolean ๊ฐ์ฒด๊ฐ€ ์ฃผ์–ด์ง€๋ฉด typeof ์—ฐ
์‚ฐ์€ โ€œobjectโ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค
JavaScript
๏ƒผ instanceof
instanceof ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์— ๊ฐ์ฒด, ์šฐ๋ณ€์— ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๋ฐ›๋Š”
๋‹ค. ์ขŒ๋ณ€ ๊ฐ์ฒด๊ฐ€ ์šฐ๋ณ€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ผ ๊ฒฝ์šฐ์— true๋ฅผ ๋ฐ˜ํ™˜ํ•œ
๋‹ค.
JavaScript
๏ƒผ in operatior
in ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์— ๋ฌธ์ž์—ด(ํ˜น์€ ํƒ€์ž…๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•œ๊ฒƒ) ์šฐ๋ณ€์— ๊ฐ์ฒด
๋‚˜ ๋ฐฐ์—ด์„ ๋ฐ›๋Š”๋‹ค. ์ขŒ๋ณ€ ๊ฐ’์ด ์šฐ๋ณ€ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์— ํ•ด๋‹น
ํ•  ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
var point = { x:1, y:1 };
var has_x_coord = โ€œxโ€ in point;
var has_y_coord = โ€œyโ€ in point;
var has_z_coord = โ€œzโ€ in point;
var ts = โ€œtoStringโ€ in point;
// ๊ฐ์ฒด ์ •์˜
// true
// true
// false
// true ์ƒ์†๋œ ํ”„๋กœํผํ‹ฐ
JavaScript
๏ƒผ for / in
๊ฐ์ฒด ๋‚ด์— ํฌํ•จ๋œ ์›์†Œ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” for / in ๋ฃจํ”„
์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค.
โ€œ๋ณ€์ˆ˜โ€๋Š” ๋ณ€์ˆ˜์ด๋ฆ„ ๋˜๋Š” ๋ณ€์ˆ˜/๋ฐฐ์—ด ๊ฐ์ฒด/๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธ
ํ•˜๋Š” var ๋ฌธ์ด์–ด์•ผ ํ•œ๋‹ค. โ€œ๊ฐ์ฒดโ€๋Š” ๊ฐ์ฒด ์ด๋ฆ„๋˜๋Š” ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋ 
์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹์ด์–ดํ– ํ•œ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋Š” ์ฃผ์–ด์ง„ ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ”„
๋กœํผํ‹ฐ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
for (๋ณ€์ˆ˜ in ๊ฐ์ฒด)
๋ฌธ์žฅ
JavaScript
๏ƒผ Declaring Variables
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์„ 
์–ธํ•˜๋ฉฐ, ๋ช…์‹œ์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ์•”๋ฌต์ ์œผ๋กœ ๊ทธ ๋ณ€์ˆ˜
๋ฅผ ์„ ์–ธํ•œ๋‹ค.
var i;
var sum;
var i=0, j=0, k=0;
var msg = โ€œwelcomeโ€;
for ( var i=0; i< 10; i++) { };
JavaScript
๏ƒผ Decaling Variables
โ‘  var ๊ตฌ๋ฌธ์œผ๋กœ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ ์–ธํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.
โ‘ก ์„ ์–ธ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฝ์œผ๋ ค ํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
โ‘ข ์„ ์–ธ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ ค ํ•˜๋ฉด, ์•”๋ฌต์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ
์„ ์–ธํ•œ๋‹ค.
(๋‹จ, ์•”๋ฌต์ ์œผ๋กœ ์„ ์–ธ๋˜๋Š” ๋ณ€์ˆ˜๋Š” ํ•ญ์ƒ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ๋‹ค.)
JavaScript
๏ƒผ Scope of variables
๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„๋Š” ๊ทธ ๋ณ€์ˆ˜๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋Š” ์˜์—ญ์„ ๋งํ•œ๋‹ค. ์ „
์—ญ ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„๋Š” ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์ด๋‹ค. ๋ฐ˜๋ฉด ์–ด๋–ค ํ•จ์ˆ˜ ๋‚ด์—์„œ
์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์˜ค์ง ๊ทธ ํ•จ์ˆ˜ ๋ชธ์ฒด ์•ˆ์—์„œ๋งŒ ์ •์˜๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€
์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋ผ ๋ถˆ๋ฆฌ๋ฉฐ, ์œ ํšจ๋ฒ”์œ„๋„ ์ง€์—ญ์ ์ด๋‹ค. ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€
์ˆ˜ ์—ญ์‹œ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์˜ค์ง ํ•ด๋‹น ํ•จ์ˆ˜์—์„œ๋งŒ ์ •์˜๋œ๋‹ค.
ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์˜ ์ „์—ญ๋ณ€์ˆ˜๋ณด๋‹ค ์šฐ์„ ์ 
์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
JavaScript
๏ƒผ Scope of variables
var scope = โ€œglobalโ€;
function checkscope() {
var scope = โ€œlocalโ€;
document.write(scope);
}
checkscope();
// ์ „์—ญ ๋ณ€์ˆ˜์„ ์–ธ
// ๊ฐ™์€ ์ด๋ฆ„์˜ ์ง€์—ญ๋ณ€์ˆ˜ ์„ ์–ธ
// ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
// โ€œlocalโ€์„ ์ถœ๋ ฅ
JavaScript
๏ƒผ Scope of variables
scope =โ€globalโ€;
function checkscope(){
scope = โ€œlocalโ€;
document.write(scope);
myscope = โ€œlocalโ€;
document.write(myscope);
}
checkscope();
document.write(scope);
document.write(myscope);
// var๊ฐ€ ์—†์–ด๋„ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ๋‹ค.
// ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ์ „์—ญ๋ณ€์ˆ˜ scope์˜ ๊ฐ’์„
๋ฐ”๊พธ๊ฒŒ ๋œ๋‹ค.
// ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์“ฐ์ธ๋‹ค.
// ์ƒˆ๋กœ์šด ์ „์—ญ๋ณ€์ˆ˜ mycope๋ฅผ ์„ ์–ธํ•œ๋‹ค.
(์•”๋ฌต์ )
// ์ƒˆ๋กœ ์„ ์–ธ๋œ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์“ฐ์ธ๋‹ค.
// โ€œlocallocalโ€ ์ถœ๋ ฅ
// โ€œlocalโ€ ์ถœ๋ ฅ
// โ€œlocalโ€ ์ถœ๋ ฅ
JavaScript
๏ƒผ Scope of variables
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” C๋‚˜ ์ž๋ฐ”์™€๋Š” ๋‹ฌ๋ฆฌ ๋ธ”๋ก ๋‹จ์œ„์˜ ์œ ํšจ๋ฒ”์œ„
๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ •์˜๋œ ๋ณ€์ˆ˜๋Š” ๊ทธ๊ฒƒ์ด
์ •์˜๋œ ์œ„์น˜์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ํ•จ์ˆ˜์— ๊ฑธ์ณ ์œ ํšจํ•˜๋‹ค.
function test(o){
var i = 0;
if (typeof o == โ€œobjectโ€) {
var j = 0;
for (var k=0; k< 10; k++) {
document.write(k);
}
document.write(k);
}
document.write(j);
}
// i๋Š” ํ•จ์ˆ˜ ์ „์ฒด์— ๊ฑธ์ณ ์ •์˜๋œ๋‹ค.
// j๋Š” ์ด ๋ธ”๋ก ๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ์ „์ฒด์—์„œ ์ •์˜๋œ๋‹ค.
// k๋Š” ๋ฃจํ”„๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ์ „์ฒด์—์„œ ์ •์˜๋œ๋‹ค.
// k๋Š” ์—ฌ์ „ํžˆ ์ •์˜๋˜์–ด ์žˆ๋‹ค. 10์ด ์ถœ๋ ฅ๋œ๋‹ค.
// j๋Š” ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ, ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด
์žˆ๋‹ค.
PROTOTYPE
Chapter 2
JavaScript
๏ƒผ JavaScript Object
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Object๋Š” ํ”„๋กœํผํ‹ฐ ์ง‘ํ•ฉ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Java๋‚˜ C++/C#์˜ ํด๋ž˜์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ํด๋ž˜์Šค๊ฐ€ ์—†๊ณ , ํด๋ž˜์Šค๋ฅผ ํ‰๋‚ด๋‚ธ ํด๋ž˜์Šค๋งŒ ์žˆ
์„ ๋ฟ์ด๋‹ค. ์ด๋ฅผ ํŽธ์˜์ƒ ํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅด๋”๋ผ๋„ ์ผ๋ฐ˜์ ์ธ ํด๋ž˜์Šค
์™€ ๋‹ค๋ฅด๋‹ค.
JavaScript
๏ƒผ Creator
์ƒ์„ฑ์ž ์˜ˆ
function Rectangle (w, h){
this.width=w;
this.height=h;
//return ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•ˆ๋จ
}
JavaScript
๏ƒผ Method
var r= new Rectangle(2,3);
r.area= function() { return this.width * this.height; }
var a=r.area();
function Rectangle(w,h){
this.width=w;
this.height=h;
this.area=funtion() { return this.width * this.height; }
}
JavaScript
๏ƒผ prototype
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ํ•จ์ˆ˜์—๋Š” prototype์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ
๋Š”๋ฐ, ์ด๊ฒƒ์€ ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋  ๋•Œ๋ถ€ํ„ฐ ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์ดˆ๊ธฐํ™”
๋œ๋‹ค. prototype ํ”„๋กœํผํ‹ฐ์˜ ์ดˆ๊ธฐ๊ฐ’์€ ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š” ๊ฐ
์ฒด๋กœ ์ง€์ •๋œ๋‹ค. (constructor)
function Rectangle (w, h){
this.width=w;
this.height=h;
}
Rectangle.prototype.area=function() {return this.width * this.height;}
JavaScript
๏ƒผ prototype chaining
rec1
width 10
height 10
__proto__
Rectangle
area function()
constructor function
Rectangle(w,h)
__proto__rec2
width 20
height 10
__proto__
Object
area function()
constructor function Object()
__proto__ null
JavaScript
๏ƒผ prototype getter/setter
์ƒ์†๋ฐ›์€ ๊ฐ์ฒด์˜ ์†์„ฑ์„ get ํ• ๋•Œ๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด ๊ฐ€์ ธ์˜ค
๋‚˜ setํ• ๋•Œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
JavaScript
๏ƒผ this
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋งค์„œ๋“œ๋‚ด์—์„œ this๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ ์›์น˜ ์•Š๋Š”
๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜ ํŠน์ง•๊ณผ
variable scope๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
JavaScript
๏ƒผ Class property, Class method
Rectangle.DEFAULT=new Rectangle();
Rectangle.switch=function (w,h) { return new Rectangle(h,w); }
JSON
Chapter 3
JavaScript
๏ƒผ JSON (JavaScript Object Notation)
JSON (JavaScript Object Notation)์€ ๊ฒฝ๋Ÿ‰์˜ DATA-๊ตํ™˜ ํ˜•์‹
์ด๋‹ค. ์ด ํ˜•์‹์€ ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์“ฐ๊ธฐ์— ์šฉ์ดํ•˜๋ฉฐ, ๊ธฐ๊ณ„๊ฐ€ ๋ถ„์„ํ•˜๊ณ 
์ƒ์„ฑํ•จ์—๋„ ์šฉ์ดํ•˜๋‹ค. JavaScript Programming Language,
Standard ECMA-262 3rd Edition - December 1999์˜ ์ผ๋ถ€์—
ํ† ๋Œ€๋ฅผ ๋‘๊ณ  ์žˆ๋‹ค. JSON์€ ์™„๋ฒฝํ•˜๊ฒŒ ์–ธ์–ด๋กœ ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์ด์ง€๋งŒ
C-family ์–ธ์–ด - C, C++, C#, Java, JavaScript, Perl, Python
๊ทธ์™ธ ๋‹ค์ˆ˜ - ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ ์นœ์ˆ™ํ•œ ๊ด€์Šต์„ ์‚ฌ์šฉํ•˜๋Š” ํ…์Šค
ํŠธ ํ˜•์‹์ด๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ๋“ค์ด JSON์„ ์ด์ƒ์ ์ธ DATA-๊ตํ™˜ ์–ธ
์–ด๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค.
JavaScript
๏ƒผ Object
JavaScript
๏ƒผ Array
JavaScript
๏ƒผ Value
JavaScript
๏ƒผ String
JavaScript
๏ƒผ Number
JavaScript
๏ƒผ Quiz
1. JSON Object๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท ์ƒ์—์„œ ์ฃผ๊ณ  ๋ฐ›์œผ๋ ค๋ฉด ์–ด
๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
2. ์—ด๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท์—์„œ ๋ฐ›์€ ์ด ๋ฐ์ดํ„ฐ๋ฅผ JavaScript์—์„œ ์‚ฌ์šฉ
ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
JavaScript
๏ƒผ JSON String
JSON String์€ ์ŠคํŠธ๋ง์ด๋‹ค. ์ŠคํŠธ๋ง์„ ํŒŒ์‹ฑํ•ด์„œ Object๋กœ ๋งŒ๋“ค
์–ด ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ŠคํŠธ๋ง์ธ๊ฒƒ ์ด์™ธ์— ์˜๋ฏธ๋Š” ์—†๋‹ค.
var str=โ€œ{โ€exampleโ€: โ€œhelloโ€}โ€;
JavaScript
๏ƒผ JSON2.js
JavaScript Object๋ฅผ String ํ‘œํ˜„์‹์œผ๋กœ (JSON)๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ์œ 
ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
https://github.com/douglascrockford/JSON-js
JavaScript
๏ƒผ eval()
๊ฐœ์š”
๋ฌธ์ž์—ด์— ๋“ค์–ด์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€
๋ฌธ๋ฒ•
eval(string)
์ „๋‹ฌ์ธ์ž(Parameters)
string
ํ‰๊ฐ€๋  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹, ์‹คํ–‰๋  ๋ฌธ์žฅ์ด ํฌํ•จ๋œ ๋ฌธ์ž์—ด
๋ฐ˜ํ™˜๊ฐ’
ํ‰๊ฐ€๋œ ๊ฐ’
์„ค๋ช…
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋‹ด์€ ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ „์—ญ ๋ฉ”์„œ๋“œ
์˜ˆ์™ธ
SyntaxError
EvalError
๊ธฐํƒ€
์ „๋‹ฌ๋œ ์ธ์ž ๋‚ด ๊ตฌ๋ฌธ ์˜ค๋ฅ˜
eval ํ•จ์ˆ˜์˜ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์‚ฌ์šฉ
๊ธฐํƒ€์˜ˆ์™ธ
AJAX
Chapter 4
JavaScript
๏ƒผ Ajax (Asynchronous JavaScript and XML)
Ajax๋Š” ์—์ด์ž‘์Šค, ์•„์ž‘์Šค ๋“ฑ์œผ๋กœ ๋ฐœ์Œํ•ฉ๋‹ˆ๋‹ค.
Ajax๋Š” XML์ด ํ•„์ˆ˜ ์กฐ๊ฑด์€ ์•„๋‹™๋‹ˆ๋‹ค. JSON์ด๋‚˜, YAML,
HTML, TEXT, CSV๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋„ ์ƒ๊ด€์ด ์—†์Šต๋‹ˆ๋‹ค.
XML๋ณด๋‹ค๋Š” Asynchronous์— ์ดˆ์ ์„ ๋‘์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
JavaScript
๏ƒผ Asynchronous
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Single Thread๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™๊ธฐํ™”๋œ ์ž‘
์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ์ค‘์— ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋น„๋™๊ธฐ ์ž‘์—…์„ ํ†ตํ•ด Background๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
๋Š” ์ ์ด ์žฅ์ ์ž…๋‹ˆ๋‹ค.
JavaScript
๏ƒผ XHR (XMLHttpRequest)
The XMLHttpRequest object implements an interface exposed
by a scripting engine that allows scripts to perform HTTP
client functionality, such as submitting form data or loading
data from a server. It is the ECMAScript HTTP API.
The name of the object is XMLHttpRequest for compatibility
with the Web, though each component of this name is
potentially misleading. First, the object supports any text
based format, including XML. Second, it can be used to make
requests over both HTTP and HTTPS (some implementations
support protocols in addition to HTTP and HTTPS, but that
functionality is not covered by this specification). Finally, it
supports "requests" in a broad sense of the term as it pertains
to HTTP; namely all activity involved with HTTP requests or
responses for the defined HTTP methods.
JavaScript
๏ƒผ XMLHttpRequest Interface
[NoInterfaceObject]
interface XMLHttpRequestEventTarget : EventTarget {
// for future use
};
[Constructor]
interface XMLHttpRequest : XMLHttpRequestEventTarget {
// event handler attributes
attribute Function onreadystatechange;
// states
const unsigned short UNSENT = 0;
const unsigned short OPENED = 1;
const unsigned short HEADERS_RECEIVED = 2;
const unsigned short LOADING = 3;
const unsigned short DONE = 4;
readonly attribute unsigned short readyState;
// request
void open(DOMString method, DOMString url);
void open(DOMString method, DOMString url, boolean async);
void open(DOMString method, DOMString url, boolean async, DOMString? user);
void open(DOMString method, DOMString url, boolean async, DOMString? user, DOMString? password);
void setRequestHeader (DOMString header, DOMString value);
void send();
void send(Document data);
void send([AllowAny] DOMString? data);
void abort();
// response
readonly attribute unsigned short status;
readonly attribute DOMString statusText;
DOMString getResponseHeader (DOMString header);
DOMString getAllResponseHeaders();
readonly attribute DOMString responseText;
readonly attribute Document responseXML;
};
JavaScript
๏ƒผ HTTP Factory
HTTP = new Object();
HTTP._factories = [
function() { return new XMLHttpRequest();},
function() { return new ActiveXObject("Msxml12.XMLHTTP");},
function() { return new ActiveXObject("Microsoft.XMLHTTP");}
];
HTTP._factory = null;
JavaScript
๏ƒผ HTTP Factory
//HTTP newRequest
HTTP.newRequest = function(){
if (HTTP._factory !=null) return HTTP._factory();
for(var i=0; i < HTTP._factories.length; i++) {
try {
var factory = HTTP._factories[i];
var request = factory();
if (request !=null) {
HTTP._factory = factory;
return request;
}
}
catch(e) {
continue;
}
}
HTTP._factory=function() {
throw new Error("XMLHttpRequest not supported");
}
HTTP._factory();
}
JavaScript
๏ƒผ Usage
var request=HTTP.newRequest();
request.onreadystatechange=function()
{
if (request.readyState == 4)
{
if (request.status == 200)
{
res=request.responseText.trim();
if(document.getElementById('popup_layer'))
document.getElementById('popup_layer').innerHTML = res;
}
}
}
request.open("POST","process.php");
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.send(HTTP.encodeFormData(data));
JavaScript
๏ƒผ Quiz
flickr์˜ API๋ฅผ ์ด์šฉํ•˜์—ฌ JSON์„ ๋ฐ›์•„์™€์„œ, ์ œ๋ชฉ, ๋‚ด์šฉ, ์‚ฌ์ง„์„
์ถœ๋ ฅํ•˜๋Š” ์›น ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
API ์„ค๋ช…
http://www.flickr.com/services/feeds/docs/photos_public/
API ์‚ฌ์šฉ ์˜ˆ
http://api.flickr.com/services/feeds/photos_public.gne?tags=
%EA%B9%80%ED%83%9C%ED%9D%AC&format=json

More Related Content

What's hot

[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœOracle Korea
ย 
Scala type class pattern
Scala type class patternScala type class pattern
Scala type class patternYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131Yong Joon Moon
ย 
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•Hyosang Hong
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229Yong Joon Moon
ย 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์Šค
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์Šค์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์Šค
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์ŠคLee Dong Wook
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)MIN SEOK KOO
ย 
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”Sungchul Park
ย 
์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ
์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ
์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐYongha Yoo
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311Yong Joon Moon
ย 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10hungrok
ย 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascriptJinKyoungHeo
ย 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์œ ์ง„ ๋ณ€
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oopํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oopYoung-Beom Rhee
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js function
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js functionํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js function
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js functionYoung-Beom Rhee
ย 
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ Yong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต Yong Joon Moon
ย 
Javascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ด
Javascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ดJavascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ด
Javascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ดKIM HEE JAE
ย 

What's hot (19)

[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
[Main Session] ๋ฏธ๋ž˜์˜ Java ๋ฏธ๋ฆฌ๋ณด๊ธฐ - ์•ฐ๋ฒ„์™€ ๋ฐœํ• ๋ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ
ย 
Scala type class pattern
Scala type class patternScala type class pattern
Scala type class pattern
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
ย 
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„’แ…กแ†ทแ„‰แ…ฎแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160229
ย 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์Šค
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์Šค์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์Šค
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ๋ฐ ํด๋ž˜์Šค
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
ย 
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
ย 
์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ
์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ
์Šค์œ„ํ”„ํŠธ ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ+แ„€แ…ฎแ„Œแ…ฉ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160311
ย 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10
ย 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
ย 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oopํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js function
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js functionํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js function
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E04 js function
ย 
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
Javascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ด
Javascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ดJavascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ด
Javascript ๊ฐ์ฒด์ƒ์„ฑํŒจํ„ด
ย 

Similar to Javascript

Hacosa js study 2์ฃผ์ฐจ
Hacosa js study 2์ฃผ์ฐจHacosa js study 2์ฃผ์ฐจ
Hacosa js study 2์ฃผ์ฐจSeong Bong Ji
ย 
์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3
์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3
์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3Jin-Hyun Park
ย 
๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive Review
๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive Review๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive Review
๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive ReviewDataUs
ย 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3destinycs
ย 
์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผ
์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผ
์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผJong Gook Bae
ย 
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2destinycs
ย 
๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐjeong seok yang
ย 
[ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
[ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ [ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
[ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ ์ธ๊ถŒ ๊น€
ย 
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statements
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statementsแ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statements
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statements๋ฏผํƒœ ๊น€
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)MIN SEOK KOO
ย 
Scalability
ScalabilityScalability
ScalabilityDongwook Lee
ย 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, ScalabilityDongwook Lee
ย 
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐPark JoongSoo
ย 
7แ„Œแ…ฎ JavaScript Part2
7แ„Œแ…ฎ JavaScript Part27แ„Œแ…ฎ JavaScript Part2
7แ„Œแ…ฎ JavaScript Part2์ง€์ˆ˜ ์œค
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Park Jonggun
ย 

Similar to Javascript (20)

Hacosa js study 2์ฃผ์ฐจ
Hacosa js study 2์ฃผ์ฐจHacosa js study 2์ฃผ์ฐจ
Hacosa js study 2์ฃผ์ฐจ
ย 
์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3
์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3
์ž๋ฐ”์นดํŽ˜ ์Šคํ„ฐ๋””- INSIDE JS 1-3
ย 
๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive Review
๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive Review๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive Review
๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive Review
ย 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3
ย 
์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผ
์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผ
์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ์Šค์นผ๋ผ
ย 
javascript01
javascript01javascript01
javascript01
ย 
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
ย 
๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
ย 
[ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
[ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ [ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
[ํ•˜์ฝ”์‚ฌ ์„ธ๋ฏธ๋‚˜] ๋น„์ „๊ณต์ž์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ
ย 
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statements
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statementsแ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statements
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 2/5 - Expressions & statements
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
ย 
Scalability
ScalabilityScalability
Scalability
ย 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, Scalability
ย 
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ•์ขŒ for AngularJS, React)static of class,class ๋ฒ”์œ„ ์•ˆ์—์„œ static ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜...
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ•์ขŒ for AngularJS, React)static of class,class ๋ฒ”์œ„ ์•ˆ์—์„œ static ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜...(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ•์ขŒ for AngularJS, React)static of class,class ๋ฒ”์œ„ ์•ˆ์—์„œ static ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜...
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ•์ขŒ for AngularJS, React)static of class,class ๋ฒ”์œ„ ์•ˆ์—์„œ static ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜...
ย 
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
ย 
7แ„Œแ…ฎ JavaScript Part2
7แ„Œแ…ฎ JavaScript Part27แ„Œแ…ฎ JavaScript Part2
7แ„Œแ…ฎ JavaScript Part2
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
ย 
Java script
Java scriptJava script
Java script
ย 
[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›
[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ  for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ  for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›
[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›
ย 
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?
ย 

More from Joshua Yoon

Data access
Data accessData access
Data accessJoshua Yoon
ย 
Design patterns
Design patternsDesign patterns
Design patternsJoshua Yoon
ย 
Database design
Database designDatabase design
Database designJoshua Yoon
ย 
HTTP Basic
HTTP BasicHTTP Basic
HTTP BasicJoshua Yoon
ย 
๊ธฐ์—…๋ฌธํ™”
๊ธฐ์—…๋ฌธํ™”๊ธฐ์—…๋ฌธํ™”
๊ธฐ์—…๋ฌธํ™”Joshua Yoon
ย 

More from Joshua Yoon (6)

Data access
Data accessData access
Data access
ย 
AOP
AOPAOP
AOP
ย 
Design patterns
Design patternsDesign patterns
Design patterns
ย 
Database design
Database designDatabase design
Database design
ย 
HTTP Basic
HTTP BasicHTTP Basic
HTTP Basic
ย 
๊ธฐ์—…๋ฌธํ™”
๊ธฐ์—…๋ฌธํ™”๊ธฐ์—…๋ฌธํ™”
๊ธฐ์—…๋ฌธํ™”
ย 

Javascript

  • 2. 1. JavaScript Basic 2. Prototype 3. JSON 4. Ajax OVERVIEW
  • 5. JavaScript ๏ƒผ JavaScript, JScript, Java ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์™€ ๋‹ค๋ฅธ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. Syntax๋งŒ Java์™€ ์œ  ์‚ฌํ•œ ๋ถ€๋ถ„์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋Š” Java์™€ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๊ณ , C์™€ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. JScript๋Š” IE ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. JavaScript๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ํ•˜๋ฉด J์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ์Šคํฌ๋ฆฝํŠธ๋Š” ECMA-262 Script์ž…๋‹ˆ๋‹ค. Flash Action Script๋ผ๊ณ  ๋ถ€๋ฅด๋Š” Script ์—ญ์‹œ ECMA 262 Script๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • 6. JavaScript ๏ƒผ Automatic Semicolon JavaScript์—์„œ๋Š” Semicolon(;)์ด ์ƒ๋žต๋œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ Semicolon์„ ๋ถ™์—ฌ ์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์ข‹์€ ์Šต๊ด€์ด ์•„๋‹ˆ๋ฏ€๋กœ Semicolon์„ ๋ถ™์—ฌ ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. return true; ์˜ˆ์ œ1 return; true; ์˜ˆ์ œ2
  • 7. JavaScript ๏ƒผ String Concatenation Operator โ€˜+โ€™ + ์—ฐ์‚ฐ์ž๋ฅผ ์ˆซ์ž์— ์‚ฌ์šฉํ•˜๋ฉด, ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ๋ฌธ์ž์—ด ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‘ ๋ฌธ์ž์—ด์„ ํ•ฉ์นฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ž์—ด์ด ์ˆซ์ž ๋ฌธ๋งฅ์— ์‚ฌ์šฉ๋˜๋ฉด ๋ฌธ์ž์—ด์€ ์ˆซ์ž๋กœ ๋ณ€ํ™˜๋ฉ ๋‹ˆ๋‹ค. โ€œ100โ€ + 10 100 + โ€œbottles of beerโ€ โ€œโ€ + 10 ๊ฒฐ๊ณผ : โ€œ10010โ€ ๊ฒฐ๊ณผ : โ€œ100 bottles of beerโ€ ๊ฒฐ๊ณผ : โ€œ10โ€ โ€œ11โ€ * โ€œ2โ€ โ€œ100โ€- 0 ๊ฒฐ๊ณผ : 22 ๊ฒฐ๊ณผ : 100 ์˜ˆ์ œ1 ์˜ˆ์ œ2
  • 8. JavaScript ๏ƒผ Boolean type casting ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์€ ์‰ฝ๊ฒŒ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํƒ€์ž…์—์„œ ๋ถˆ ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๊ณ  ๊ทธ ๋ณ€ํ™˜์€ ๋Œ€๊ฐœ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค. ์ˆซ์ž ๋ฌธ๋งฅ์—์„œ์˜ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์€ true๋Š” ์ˆซ์ž 1, false๋Š” ์ˆซ์ž 0์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๋ฌธ์ž์—ด์—์„œ๋Š” ๋ฌธ์ž์—ด โ€œtrueโ€/โ€œfalseโ€๋กœ ์ž๋™ ๋ณ€ํ™˜๋œ๋‹ค. ๋งŒ์•ฝ ์ˆซ์ž๊ฐ€ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๋ฉด 0์ด๋‚˜ NaN ์ธ ๊ฒฝ์šฐ false ๊ทธ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” true๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ, ๋ฌธ์ž์—ด์ด ๋ถˆ๋ฆฌ ์–ธ ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ณณ์—์„œ๋Š” ๋นˆ ๋ฌธ์ž์—ด์€ false, ๊ทธ ์™ธ๋Š” true๋กœ ๋ณ€ ํ™˜๋œ๋‹ค. null๊ณผ undefined์˜ ๊ฐ’์€ false๋กœ ๋ณ€ํ™˜๋˜๊ณ  ๋„์ด ์•„๋‹Œ ๊ฐ ์ฒด๋‚˜ ๋ฐฐ์—ด, ํ•จ์ˆ˜๋Š” true๋กœ ๋ณ€ํ™˜๋œ๋‹ค.
  • 9. JavaScript ๏ƒผ Function function square(x) { return x*x ; } // ํ•จ์ˆ˜ ์ด๋ฆ„์€ square์ด๊ณ  ์ „๋‹ฌ์ธ์ž x๋ฅผ ๋ฐ›๋Š”๋‹ค. // ํ•จ์ˆ˜ ์‹œ์ž‘ // ์ „๋‹ฌ์ธ์ž x๋ฅผ ์ œ๊ณฑํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค // ํ•จ์ˆ˜ ๋
  • 10. JavaScript ๏ƒผ Function literal ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ ์ •์˜์™€ ๋‹ค๋ฅด๊ฒŒ ํ•จ์ˆ˜๋ฆฌํ„ฐ๋Ÿด์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„ ์‹ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. var square = function(x){ return x*x; };
  • 11. JavaScript ๏ƒผ Closure uniqueID = (function() { var id =0; return function() { return id++; }; })(); // ๋ฐ”๊นฅ ํ•จ์ˆ˜๋Š” // ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , uniqueID์—๋Š” // ์ค‘์ฒฉํ•จ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  • 12. JavaScript ๏ƒผ Object native object spec์— ์ •์˜๋œ object built-in object ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ œ๊ณตํ•˜๋Š” object host object ๋ธŒ๋ผ์šฐ์ €์˜ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จํ•œ object, ์˜ˆ: DOM
  • 13. JavaScript ๏ƒผ Object ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ์ƒ์„ฑ์€ new ์—ฐ์‚ฐ์ž์™€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. var obj = new Object(); var now = new Date();
  • 14. JavaScript ๏ƒผ new new ์—ฐ์‚ฐ์ž๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•œ ์ƒ ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. new ์—ฐ์‚ฐ์ž๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์•ž์— ์œ„์น˜ํ•œ๋‹ค. ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. constructor๋Š” ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์ด์–ด์•ผ ํ•˜ ๋ฉฐ, ์ „๋‹ฌ์ธ์ž(arguments)๋Š” ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค. ์ „๋‹ฌ์ธ์ž๋Š” ์—† ์„์ˆ˜๋„ ์žˆ๊ณ  2๊ฐœ ์ด์ƒ์ผ๋•Œ๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. new ์—ฐ์‚ฐ์ž๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑํ•˜๋Š” ๊ฐ์ฒด์—๋Š” ์•„๋ฌด๋Ÿฐ ํ”„๋กœํผํ‹ฐ๋„ ์ •์˜ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค. new constructor(arguments)
  • 15. JavaScript ๏ƒผ Object literal ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ”„๋กœํผํ‹ฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฐ์ฒด ๋ฆฌํ„ฐ ๋Ÿด ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ์ฒด๋ฆฌํ„ฐ๋Ÿด์€ ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ณ„๋˜๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„ / ๊ฐ’ ์Œ๋“ค์ด ๋‹ค์‹œ ์‰ผํ‘œ๋กœ ๋ถ„๋ฆฌ๋œ ๋ชฉ๋ก์ด๋‹ค. var point={x:2.3, y:-1.2}; var rectangle = { upperLeft: { x: 2, y :2 }, lowerRight: { x:4 , y:4 } };
  • 16. JavaScript ๏ƒผ Object and Associative array ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฐ์ฒด ์ ‘๊ทผ ๋ฐฉ๋ฒ•๊ณผ ์—ฐ๊ด€๋ฐฐ์—ด (associative array) ํ˜•ํƒœ์˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ์ ‘๊ทผ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. image๋ผ๋Š” ๊ฐ์ฒด์— width, height ๋‘๊ฐ€์ง€ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค ๋ฉด, ์˜ˆ์ œ 1๊ณผ 2 ๋‘๊ฐ€์ง€ ํ˜•ํƒœ๋กœ image์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค. image.width image.height image[โ€œwidthโ€] image[โ€œheightโ€]
  • 17. JavaScript ๏ƒผ Array ๋ฐฐ์—ด(array)์€ ๋ฒˆํ˜ธ(์ธ๋ฑ์Šค)์™€ ๋ฒˆํ˜ธ์— ๋Œ€์‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค๋กœ ์ด๋ฃจ ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ๋ฐฐ์—ด์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์ ์ด ์žˆ๋Š” ์—ฐ๊ด€๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์ธ๋ฐ ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด์€ ์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜๋กœ ์ธ๋ฑ์‹ฑ ๋˜๋Š” ๋ฐ˜๋ฉด ์—ฐ๊ด€๋ฐฐ์—ด์€ ๋ฌธ์ž์—ด๋กœ ์ธ๋ฑ ์‹ฑ๋œ๋‹ค. ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด ํ˜•ํƒœ ๋ง๊ณ ๋Š” ๋‹ค์ฐจ์› ๋ฐฐ์—ด ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ ์„ ์œ ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Š” ํƒ€์ž…์ œ์•ฝ์ด ์—†๋Š” ์–ธ์–ด์ด๋ฏ€๋กœ ๋ฐฐ์—ด ๋‚ด ์›์†Œ๋“ค์ด ๋ชจ๋‘ ๋™์ผํ•œ ํƒ€ ์ž…์„ ๊ฐ€์งˆ ํ•„์š”๋Š” ์—†๋‹ค.
  • 18. JavaScript ๏ƒผ Array ๋ฐฐ์—ด์€ Array() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ƒ์„ฑํ•œ๋‹ค. ๋ฐฐ์—ด ์ƒ์„ฑํ›„ ์–ด๋–ค ์ธ๋ฑ ์Šค์—๋ผ๋„ ์–ผ๋งˆ๋“ ์ง€ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. var arr= new Array(); arr[0] = 10; arr[1] = โ€œjavascriptโ€; arr[2] = { x : 10, y : 20}; var arr= new Array(10,โ€javascriptโ€,true,{x:10,y:20}); var arr= new Array(10);
  • 19. JavaScript ๏ƒผ Array literal ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฆฌํ„ฐ๋Ÿด ๋ฌธ๋ฒ•์„ ์ œ๊ณต ํ•œ๋‹ค. ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ’๋“ค์˜ ๋ชฉ ๋ก์ด๋‹ค. ๋Œ€๊ด„ํ˜ธ ๋‚ด ๊ฐ’๋“ค์€ 0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฐ์—ด ์ธ๋ฑ์Šค์— ์ฐจ๋ก€๋Œ€ ๋กœ ํ• ๋‹น๋œ๋‹ค. var arr= [10,โ€javascriptโ€, {x:10,y:20}]; var matrix = [[1.2.3],[4,5,6],[7,8,9]]; var base=1000; var table= [base,base+1.base+2,base+3]; var sparseArray = [1,,,,5];
  • 20. JavaScript ๏ƒผ undefined undefined๋Š” ์„ ์–ธ์€ ๋˜์—ˆ์ง€๋งŒ ๊ฐ’์ด ํ• ๋‹น๋œ ์ ์ด ์—†๋Š” ๋ณ€์ˆ˜์— ์ ‘ ๊ทผํ•˜๊ฑฐ๋‚˜, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด๋‹ค. undefined๋Š” null๊ณผ ๋™์ผํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์œ ๋…ํ•ด ๋‘์–ด์•ผ ํ•œ๋‹ค.
  • 21. JavaScript ๏ƒผ null null์€ ์•„๋ฌด๋Ÿฐ ๊ฐ’๋„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๋Š” ํŠน์ˆ˜ํ•œ ๊ฐ’์ด๋‹ค. ์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€ null๊ฐ’์„ ๊ฐ€์ง€๋ฉด ๊ทธ ๋ณ€์ˆ˜๊ฐ€ ์œ ์š”ํ•œ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด, ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋˜ ๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. undefined์™€ null์€ ์„œ๋กœ ๊ตฌ๋ณ„๋˜๋Š” ๊ฐ’์ด์ง€๋งŒ ๋™๋“ฑ์—ฐ์‚ฐ์ž (equality operator, โ€˜==โ€™)๋Š” ๋‘˜์„ ๊ฐ™์€๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
  • 22. JavaScript ๏ƒผ typeof ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์€ โ€œnumberโ€, โ€œstringโ€, โ€œbooleanโ€์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๊ฐ์ฒด, ๋ฐฐ์—ด, null ๊ฐ’ ์— ๋Œ€ํ•ด์„œ๋Š” โ€œobjectโ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•จ์ˆ˜๋Š” โ€œfunctionโ€์„ ๋ฐ˜ํ™˜ํ•˜ ๊ณ  ์ •์˜๋˜์ง€ ์•Š์€ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด โ€œundefinedโ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ”ผ ์—ฐ์‚ฐ์ž๋กœ Number, String, Boolean ๊ฐ์ฒด๊ฐ€ ์ฃผ์–ด์ง€๋ฉด typeof ์—ฐ ์‚ฐ์€ โ€œobjectโ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค
  • 23. JavaScript ๏ƒผ instanceof instanceof ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์— ๊ฐ์ฒด, ์šฐ๋ณ€์— ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๋ฐ›๋Š” ๋‹ค. ์ขŒ๋ณ€ ๊ฐ์ฒด๊ฐ€ ์šฐ๋ณ€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ผ ๊ฒฝ์šฐ์— true๋ฅผ ๋ฐ˜ํ™˜ํ•œ ๋‹ค.
  • 24. JavaScript ๏ƒผ in operatior in ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์— ๋ฌธ์ž์—ด(ํ˜น์€ ํƒ€์ž…๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•œ๊ฒƒ) ์šฐ๋ณ€์— ๊ฐ์ฒด ๋‚˜ ๋ฐฐ์—ด์„ ๋ฐ›๋Š”๋‹ค. ์ขŒ๋ณ€ ๊ฐ’์ด ์šฐ๋ณ€ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์— ํ•ด๋‹น ํ•  ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. var point = { x:1, y:1 }; var has_x_coord = โ€œxโ€ in point; var has_y_coord = โ€œyโ€ in point; var has_z_coord = โ€œzโ€ in point; var ts = โ€œtoStringโ€ in point; // ๊ฐ์ฒด ์ •์˜ // true // true // false // true ์ƒ์†๋œ ํ”„๋กœํผํ‹ฐ
  • 25. JavaScript ๏ƒผ for / in ๊ฐ์ฒด ๋‚ด์— ํฌํ•จ๋œ ์›์†Œ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” for / in ๋ฃจํ”„ ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค. โ€œ๋ณ€์ˆ˜โ€๋Š” ๋ณ€์ˆ˜์ด๋ฆ„ ๋˜๋Š” ๋ณ€์ˆ˜/๋ฐฐ์—ด ๊ฐ์ฒด/๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธ ํ•˜๋Š” var ๋ฌธ์ด์–ด์•ผ ํ•œ๋‹ค. โ€œ๊ฐ์ฒดโ€๋Š” ๊ฐ์ฒด ์ด๋ฆ„๋˜๋Š” ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹์ด์–ดํ– ํ•œ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋Š” ์ฃผ์–ด์ง„ ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ”„ ๋กœํผํ‹ฐ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. for (๋ณ€์ˆ˜ in ๊ฐ์ฒด) ๋ฌธ์žฅ
  • 26. JavaScript ๏ƒผ Declaring Variables ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์„  ์–ธํ•˜๋ฉฐ, ๋ช…์‹œ์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ์•”๋ฌต์ ์œผ๋กœ ๊ทธ ๋ณ€์ˆ˜ ๋ฅผ ์„ ์–ธํ•œ๋‹ค. var i; var sum; var i=0, j=0, k=0; var msg = โ€œwelcomeโ€; for ( var i=0; i< 10; i++) { };
  • 27. JavaScript ๏ƒผ Decaling Variables โ‘  var ๊ตฌ๋ฌธ์œผ๋กœ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ ์–ธํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค. โ‘ก ์„ ์–ธ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฝ์œผ๋ ค ํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. โ‘ข ์„ ์–ธ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ ค ํ•˜๋ฉด, ์•”๋ฌต์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. (๋‹จ, ์•”๋ฌต์ ์œผ๋กœ ์„ ์–ธ๋˜๋Š” ๋ณ€์ˆ˜๋Š” ํ•ญ์ƒ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ๋‹ค.)
  • 28. JavaScript ๏ƒผ Scope of variables ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„๋Š” ๊ทธ ๋ณ€์ˆ˜๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋Š” ์˜์—ญ์„ ๋งํ•œ๋‹ค. ์ „ ์—ญ ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„๋Š” ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์ด๋‹ค. ๋ฐ˜๋ฉด ์–ด๋–ค ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์˜ค์ง ๊ทธ ํ•จ์ˆ˜ ๋ชธ์ฒด ์•ˆ์—์„œ๋งŒ ์ •์˜๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€ ์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋ผ ๋ถˆ๋ฆฌ๋ฉฐ, ์œ ํšจ๋ฒ”์œ„๋„ ์ง€์—ญ์ ์ด๋‹ค. ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€ ์ˆ˜ ์—ญ์‹œ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์˜ค์ง ํ•ด๋‹น ํ•จ์ˆ˜์—์„œ๋งŒ ์ •์˜๋œ๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์˜ ์ „์—ญ๋ณ€์ˆ˜๋ณด๋‹ค ์šฐ์„ ์  ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • 29. JavaScript ๏ƒผ Scope of variables var scope = โ€œglobalโ€; function checkscope() { var scope = โ€œlocalโ€; document.write(scope); } checkscope(); // ์ „์—ญ ๋ณ€์ˆ˜์„ ์–ธ // ๊ฐ™์€ ์ด๋ฆ„์˜ ์ง€์—ญ๋ณ€์ˆ˜ ์„ ์–ธ // ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. // โ€œlocalโ€์„ ์ถœ๋ ฅ
  • 30. JavaScript ๏ƒผ Scope of variables scope =โ€globalโ€; function checkscope(){ scope = โ€œlocalโ€; document.write(scope); myscope = โ€œlocalโ€; document.write(myscope); } checkscope(); document.write(scope); document.write(myscope); // var๊ฐ€ ์—†์–ด๋„ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ๋‹ค. // ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ์ „์—ญ๋ณ€์ˆ˜ scope์˜ ๊ฐ’์„ ๋ฐ”๊พธ๊ฒŒ ๋œ๋‹ค. // ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์“ฐ์ธ๋‹ค. // ์ƒˆ๋กœ์šด ์ „์—ญ๋ณ€์ˆ˜ mycope๋ฅผ ์„ ์–ธํ•œ๋‹ค. (์•”๋ฌต์ ) // ์ƒˆ๋กœ ์„ ์–ธ๋œ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์“ฐ์ธ๋‹ค. // โ€œlocallocalโ€ ์ถœ๋ ฅ // โ€œlocalโ€ ์ถœ๋ ฅ // โ€œlocalโ€ ์ถœ๋ ฅ
  • 31. JavaScript ๏ƒผ Scope of variables ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” C๋‚˜ ์ž๋ฐ”์™€๋Š” ๋‹ฌ๋ฆฌ ๋ธ”๋ก ๋‹จ์œ„์˜ ์œ ํšจ๋ฒ”์œ„ ๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ •์˜๋œ ๋ณ€์ˆ˜๋Š” ๊ทธ๊ฒƒ์ด ์ •์˜๋œ ์œ„์น˜์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ํ•จ์ˆ˜์— ๊ฑธ์ณ ์œ ํšจํ•˜๋‹ค. function test(o){ var i = 0; if (typeof o == โ€œobjectโ€) { var j = 0; for (var k=0; k< 10; k++) { document.write(k); } document.write(k); } document.write(j); } // i๋Š” ํ•จ์ˆ˜ ์ „์ฒด์— ๊ฑธ์ณ ์ •์˜๋œ๋‹ค. // j๋Š” ์ด ๋ธ”๋ก ๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ์ „์ฒด์—์„œ ์ •์˜๋œ๋‹ค. // k๋Š” ๋ฃจํ”„๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ์ „์ฒด์—์„œ ์ •์˜๋œ๋‹ค. // k๋Š” ์—ฌ์ „ํžˆ ์ •์˜๋˜์–ด ์žˆ๋‹ค. 10์ด ์ถœ๋ ฅ๋œ๋‹ค. // j๋Š” ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ, ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
  • 33. JavaScript ๏ƒผ JavaScript Object ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Object๋Š” ํ”„๋กœํผํ‹ฐ ์ง‘ํ•ฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Java๋‚˜ C++/C#์˜ ํด๋ž˜์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ํด๋ž˜์Šค๊ฐ€ ์—†๊ณ , ํด๋ž˜์Šค๋ฅผ ํ‰๋‚ด๋‚ธ ํด๋ž˜์Šค๋งŒ ์žˆ ์„ ๋ฟ์ด๋‹ค. ์ด๋ฅผ ํŽธ์˜์ƒ ํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅด๋”๋ผ๋„ ์ผ๋ฐ˜์ ์ธ ํด๋ž˜์Šค ์™€ ๋‹ค๋ฅด๋‹ค.
  • 34. JavaScript ๏ƒผ Creator ์ƒ์„ฑ์ž ์˜ˆ function Rectangle (w, h){ this.width=w; this.height=h; //return ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•ˆ๋จ }
  • 35. JavaScript ๏ƒผ Method var r= new Rectangle(2,3); r.area= function() { return this.width * this.height; } var a=r.area(); function Rectangle(w,h){ this.width=w; this.height=h; this.area=funtion() { return this.width * this.height; } }
  • 36. JavaScript ๏ƒผ prototype ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ํ•จ์ˆ˜์—๋Š” prototype์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ ๋Š”๋ฐ, ์ด๊ฒƒ์€ ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋  ๋•Œ๋ถ€ํ„ฐ ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์ดˆ๊ธฐํ™” ๋œ๋‹ค. prototype ํ”„๋กœํผํ‹ฐ์˜ ์ดˆ๊ธฐ๊ฐ’์€ ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š” ๊ฐ ์ฒด๋กœ ์ง€์ •๋œ๋‹ค. (constructor) function Rectangle (w, h){ this.width=w; this.height=h; } Rectangle.prototype.area=function() {return this.width * this.height;}
  • 37. JavaScript ๏ƒผ prototype chaining rec1 width 10 height 10 __proto__ Rectangle area function() constructor function Rectangle(w,h) __proto__rec2 width 20 height 10 __proto__ Object area function() constructor function Object() __proto__ null
  • 38. JavaScript ๏ƒผ prototype getter/setter ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด์˜ ์†์„ฑ์„ get ํ• ๋•Œ๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด ๊ฐ€์ ธ์˜ค ๋‚˜ setํ• ๋•Œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • 39. JavaScript ๏ƒผ this ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋งค์„œ๋“œ๋‚ด์—์„œ this๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ ์›์น˜ ์•Š๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜ ํŠน์ง•๊ณผ variable scope๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • 40. JavaScript ๏ƒผ Class property, Class method Rectangle.DEFAULT=new Rectangle(); Rectangle.switch=function (w,h) { return new Rectangle(h,w); }
  • 42. JavaScript ๏ƒผ JSON (JavaScript Object Notation) JSON (JavaScript Object Notation)์€ ๊ฒฝ๋Ÿ‰์˜ DATA-๊ตํ™˜ ํ˜•์‹ ์ด๋‹ค. ์ด ํ˜•์‹์€ ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์“ฐ๊ธฐ์— ์šฉ์ดํ•˜๋ฉฐ, ๊ธฐ๊ณ„๊ฐ€ ๋ถ„์„ํ•˜๊ณ  ์ƒ์„ฑํ•จ์—๋„ ์šฉ์ดํ•˜๋‹ค. JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999์˜ ์ผ๋ถ€์— ํ† ๋Œ€๋ฅผ ๋‘๊ณ  ์žˆ๋‹ค. JSON์€ ์™„๋ฒฝํ•˜๊ฒŒ ์–ธ์–ด๋กœ ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์ด์ง€๋งŒ C-family ์–ธ์–ด - C, C++, C#, Java, JavaScript, Perl, Python ๊ทธ์™ธ ๋‹ค์ˆ˜ - ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ ์นœ์ˆ™ํ•œ ๊ด€์Šต์„ ์‚ฌ์šฉํ•˜๋Š” ํ…์Šค ํŠธ ํ˜•์‹์ด๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ๋“ค์ด JSON์„ ์ด์ƒ์ ์ธ DATA-๊ตํ™˜ ์–ธ ์–ด๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค.
  • 48. JavaScript ๏ƒผ Quiz 1. JSON Object๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท ์ƒ์—์„œ ์ฃผ๊ณ  ๋ฐ›์œผ๋ ค๋ฉด ์–ด ๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? 2. ์—ด๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท์—์„œ ๋ฐ›์€ ์ด ๋ฐ์ดํ„ฐ๋ฅผ JavaScript์—์„œ ์‚ฌ์šฉ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
  • 49. JavaScript ๏ƒผ JSON String JSON String์€ ์ŠคํŠธ๋ง์ด๋‹ค. ์ŠคํŠธ๋ง์„ ํŒŒ์‹ฑํ•ด์„œ Object๋กœ ๋งŒ๋“ค ์–ด ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ŠคํŠธ๋ง์ธ๊ฒƒ ์ด์™ธ์— ์˜๋ฏธ๋Š” ์—†๋‹ค. var str=โ€œ{โ€exampleโ€: โ€œhelloโ€}โ€;
  • 50. JavaScript ๏ƒผ JSON2.js JavaScript Object๋ฅผ String ํ‘œํ˜„์‹์œผ๋กœ (JSON)๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ์œ  ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. https://github.com/douglascrockford/JSON-js
  • 51. JavaScript ๏ƒผ eval() ๊ฐœ์š” ๋ฌธ์ž์—ด์— ๋“ค์–ด์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ ๋ฌธ๋ฒ• eval(string) ์ „๋‹ฌ์ธ์ž(Parameters) string ํ‰๊ฐ€๋  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹, ์‹คํ–‰๋  ๋ฌธ์žฅ์ด ํฌํ•จ๋œ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜๊ฐ’ ํ‰๊ฐ€๋œ ๊ฐ’ ์„ค๋ช… ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋‹ด์€ ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ „์—ญ ๋ฉ”์„œ๋“œ ์˜ˆ์™ธ SyntaxError EvalError ๊ธฐํƒ€ ์ „๋‹ฌ๋œ ์ธ์ž ๋‚ด ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ eval ํ•จ์ˆ˜์˜ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์‚ฌ์šฉ ๊ธฐํƒ€์˜ˆ์™ธ
  • 53. JavaScript ๏ƒผ Ajax (Asynchronous JavaScript and XML) Ajax๋Š” ์—์ด์ž‘์Šค, ์•„์ž‘์Šค ๋“ฑ์œผ๋กœ ๋ฐœ์Œํ•ฉ๋‹ˆ๋‹ค. Ajax๋Š” XML์ด ํ•„์ˆ˜ ์กฐ๊ฑด์€ ์•„๋‹™๋‹ˆ๋‹ค. JSON์ด๋‚˜, YAML, HTML, TEXT, CSV๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋„ ์ƒ๊ด€์ด ์—†์Šต๋‹ˆ๋‹ค. XML๋ณด๋‹ค๋Š” Asynchronous์— ์ดˆ์ ์„ ๋‘์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • 54. JavaScript ๏ƒผ Asynchronous ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Single Thread๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™๊ธฐํ™”๋œ ์ž‘ ์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ์ค‘์— ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ž‘์—…์„ ํ†ตํ•ด Background๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค ๋Š” ์ ์ด ์žฅ์ ์ž…๋‹ˆ๋‹ค.
  • 55. JavaScript ๏ƒผ XHR (XMLHttpRequest) The XMLHttpRequest object implements an interface exposed by a scripting engine that allows scripts to perform HTTP client functionality, such as submitting form data or loading data from a server. It is the ECMAScript HTTP API. The name of the object is XMLHttpRequest for compatibility with the Web, though each component of this name is potentially misleading. First, the object supports any text based format, including XML. Second, it can be used to make requests over both HTTP and HTTPS (some implementations support protocols in addition to HTTP and HTTPS, but that functionality is not covered by this specification). Finally, it supports "requests" in a broad sense of the term as it pertains to HTTP; namely all activity involved with HTTP requests or responses for the defined HTTP methods.
  • 56. JavaScript ๏ƒผ XMLHttpRequest Interface [NoInterfaceObject] interface XMLHttpRequestEventTarget : EventTarget { // for future use }; [Constructor] interface XMLHttpRequest : XMLHttpRequestEventTarget { // event handler attributes attribute Function onreadystatechange; // states const unsigned short UNSENT = 0; const unsigned short OPENED = 1; const unsigned short HEADERS_RECEIVED = 2; const unsigned short LOADING = 3; const unsigned short DONE = 4; readonly attribute unsigned short readyState; // request void open(DOMString method, DOMString url); void open(DOMString method, DOMString url, boolean async); void open(DOMString method, DOMString url, boolean async, DOMString? user); void open(DOMString method, DOMString url, boolean async, DOMString? user, DOMString? password); void setRequestHeader (DOMString header, DOMString value); void send(); void send(Document data); void send([AllowAny] DOMString? data); void abort(); // response readonly attribute unsigned short status; readonly attribute DOMString statusText; DOMString getResponseHeader (DOMString header); DOMString getAllResponseHeaders(); readonly attribute DOMString responseText; readonly attribute Document responseXML; };
  • 57. JavaScript ๏ƒผ HTTP Factory HTTP = new Object(); HTTP._factories = [ function() { return new XMLHttpRequest();}, function() { return new ActiveXObject("Msxml12.XMLHTTP");}, function() { return new ActiveXObject("Microsoft.XMLHTTP");} ]; HTTP._factory = null;
  • 58. JavaScript ๏ƒผ HTTP Factory //HTTP newRequest HTTP.newRequest = function(){ if (HTTP._factory !=null) return HTTP._factory(); for(var i=0; i < HTTP._factories.length; i++) { try { var factory = HTTP._factories[i]; var request = factory(); if (request !=null) { HTTP._factory = factory; return request; } } catch(e) { continue; } } HTTP._factory=function() { throw new Error("XMLHttpRequest not supported"); } HTTP._factory(); }
  • 59. JavaScript ๏ƒผ Usage var request=HTTP.newRequest(); request.onreadystatechange=function() { if (request.readyState == 4) { if (request.status == 200) { res=request.responseText.trim(); if(document.getElementById('popup_layer')) document.getElementById('popup_layer').innerHTML = res; } } } request.open("POST","process.php"); request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); request.send(HTTP.encodeFormData(data));
  • 60. JavaScript ๏ƒผ Quiz flickr์˜ API๋ฅผ ์ด์šฉํ•˜์—ฌ JSON์„ ๋ฐ›์•„์™€์„œ, ์ œ๋ชฉ, ๋‚ด์šฉ, ์‚ฌ์ง„์„ ์ถœ๋ ฅํ•˜๋Š” ์›น ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. API ์„ค๋ช… http://www.flickr.com/services/feeds/docs/photos_public/ API ์‚ฌ์šฉ ์˜ˆ http://api.flickr.com/services/feeds/photos_public.gne?tags= %EA%B9%80%ED%83%9C%ED%9D%AC&format=json

Editor's Notes

  1. ๋ช…์‹œ์ ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์›ํ•˜๊ฑฐ๋‚˜ ์กฐ๊ธˆ ์œตํ†ต์ ์ธ ๋ฐฉ๋ฒ•์˜ ๋ณ€ํ™˜์„ ์›ํ•œ๋‹ค๋ฉด ์ŠคํŠธ๋ง ๊ฐ์ฒด์˜ toString()๋งค์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ parseInt(),parseFloat()์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  2. ๋ฌธ์ œ๋Š” area๋„ ํ•˜๋‚˜์˜ ํ”„๋กœํ„ฐํ‹ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ํฌ๋‹ค.
  3. http://json.org/example.html