์ƒˆ์†Œ์‹

Languages/Java Script

[Js] Object | Object์˜ ํ™•์žฅ | Object API

  • -
๋ฐ˜์‘ํ˜•

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ "์ƒํ™œ์ฝ”๋”ฉ"์˜ ์ด๊ณ ์ž‰ ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ฌ๋ฆฐ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค.

์ƒ์—…์ ์ธ ์šฉ๋„๊ฐ€ ์•„๋‹Œ, ๊ฐœ์ธ ๊ณต๋ถ€ ์ •๋ฆฌ ๋ชฉ์ ์œผ๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ž„์„ ๋ฏธ๋ฆฌ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

 


Object

 

Object ๊ฐ์ฒด๋Š” ๊ฐ์ฒด์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์ด๋‹ค.

๋‹ค์‹œ ๋งํ•ด์„œ ์•„๋ฌด๊ฒƒ๋„ ์ƒ์†๋ฐ›์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๊ฐ์ฒด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„๋กœ Object๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

<script>
    var grades = {'haeun': 10, 'admin': 6, 'root': 80};
</script>

 

 

๋™์‹œ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๊ฐ์ฒด๋Š” Object ๊ฐ์ฒด๋ฅผ ์ƒ์† ๋ฐ›๋Š”๋ฐ, ๊ทธ๋Ÿฐ ์ด์œ ๋กœ ๋ชจ๋“  ๊ฐ์ฒด๋Š” Object ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

์˜ˆ๋กœ ๋“ค์ž๋ฉด, ์ด์ „์‹œ๊ฐ„์—์„œ prototype์„ ํ†ตํ•ด ์ƒ์†์„ ํ•ด๋ณด์•˜๋Š”๋ฐ, ๊ทธ ์ค‘ ์ตœ์ข… ๊ฐ์ฒด๋„ ์‚ฌ์‹ค ์ƒ์†์„ ๋ฐ›๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ์ตœ์ƒ์œ„ ์ƒ์†์ž๊ฐ€ Object๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.(๋ถ€๋ชจ์˜ ๋ถ€๋ชจ! ์ฆ‰ ๋ชจ๋“  ๊ฐ์ฒด์˜ ๋ถ€๋ชจ์ž„)

 

์ด๋Ÿฌํ•œ ํŠน์ง•์„ ํ™œ์šฉํ•œ๋‹ค๋ฉด Object์˜ prototype์„ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋ง๊ณผ ๊ฐ™๋‹ค.

 

 

 

์•„๋ž˜๋Š” Object ์˜ Object๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์ด๊ณ , ๊ทธ ์•„๋ž˜ ์„ค๋ช…์„ ๋ณด๋ฉฐ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด๋„๋ก ํ•˜์ž!


developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object

 

Object - JavaScript | MDN

Object ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด ๋ž˜ํผ(wrapper)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.// ๊ฐ์ฒด ์ดˆ๊ธฐ์ž ๋˜๋Š” ๋ฆฌํ„ฐ๋Ÿด { [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] } // ์ƒ์„ฑ์ž new Object([value]) nameValuePair1, nameValuePair2, ... nameValuePairN ์ฝœ๋ก ์œผ

developer.mozilla.org

www.youtube.com/watch?v=5OFbsj-UuIc&feature=emb_logo


์•„๋ž˜๋Š” Object API์‚ฌ์šฉ๋ฒ• ์ค‘, keys()์™€ toString()์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋‹ด๊ณ  ์žˆ๋‹ค.

developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

 

Object.prototype.toString() - JavaScript | MDN

The toString() ์€ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” object์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn

developer.mozilla.org

์œ„ ๋‘๊ฐ€์ง€๋ฅผ ๋ณด๋ฉด ๊ฐ™์€ Object์˜ API์ด์ง€๋งŒ, ํ•˜๋‚˜๋Š” ๊ฐ€์šด๋ฐ์— prototype์ด ๋ถ™๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ถ™์ง€ ์•Š์•˜๋‹ค.

 

 

์ด ๋‘๊ฐ€์ง€์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ?

 

Object.keys(arr) ๋Š” ๊ฒฐ๊ตญ Object.keys = function()๋ผ๋Š” ๋œป์œผ๋กœ ์—ฌ๊ธฐ์—์„œ Object๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ผ ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ Object.prototype.toString()์€ Object๋ผ๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜ . prototype. toString() = function()์ด๋ผ๋Š” ๋œป์ด๋‹ค.

ํ”„๋กœํ† ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜๋Š” ํŠน์ˆ˜ํ•œ ํ”„๋กœํฌํ‹ฐ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์›ํ˜•์œผ๋กœ ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํ†  ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

์ฆ‰ ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด Object๋Š” ๋ชจ๋“  ๊ฐ์ฒด์˜ ๋ถ€๋ชจ์ด๊ณ , ์ค‘๊ฐ„์— prototype์ด ๋“ค์–ด๊ฐ„ API๋Š” ๋ชจ๋“  ๊ฐ์ฒด์—์„œ ์ƒ์†ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฉฐ ์ด ๋ง์€ ๊ณง ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ์œ„์˜ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ˆ˜์ •ํ•˜๊ณ  ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

 

๊ทธ๋ ‡๋‹ค๋ฉด ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ Object ๊ฐ์ฒด๋ฅผ ํ™•์žฅํ•œ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด์ž.

 

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋ฐฐ์—ด์˜ ๊ฐ’์ค‘ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด true ์—†๋‹ค๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ์˜ˆ์ œ์ด๋‹ค.

<!DOCTYPE html>
<html>
<head>
	<title> Object ํ™•์žฅ</title>
</head>
<body>
<script type="text/javascript">
	Object.prototype.contain = function(fine) {//์ฒดํฌํ•˜๋ ค๋Š” ๊ฐ’์ด๋ฆ„ 
	    for(var name in this){//ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด for in ์‚ฌ์šฉ 
	        if(this[name] === fine){
	            return true;
	        }
	    }
	    return false;
	}
	var o = {'name':'haeun', 'city':'seoul'}
	console.log(o.contain('haeun'));//this๊ฐ€ o๊ฐ€ ๋จ.
	var a = ['haeun','admin','root'];
	console.log(a.contain('hacker'));//this๊ฐ€ a๊ฐ€ ๋จ.
</script>
</body>
</html>

์ด๋ ‡๊ฒŒ object API์˜ ์ƒ์†์„ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์— ํฐ ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค.

 

 

๊ทธ๋ ‡๋‹ค๋ฉด Object ํ™•์žฅ์˜ ์œ„ํ—˜์€ ๋ฌด์—‡์ผ๊นŒ?

 

Object ๊ฐ์ฒด๋Š” ํ™•์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ๊ฐ์ฒด์— ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํ™•์žฅํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“  ํ›„, ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž.

<script>
    for(var name in o){
        console.log(name);  
    }
</script>

๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

name
contain

 

์œ„์—์„œ ํ™•์žฅํ•œ ์ฝ”๋“œ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณธ๋‹ค๋ฉด, var o๋ผ๋Š” ๋ณ€์ˆ˜์— ๋‚ด๊ฐ€ ๋„ฃ์€ ํ‚ค ๊ฐ’์€ name, city ๋‘๊ฐ€์ง€ ๋ฟ์ธ๋ฐ ์ด๋ฅผ

์ถœ๋ ฅํ•ด๋ณด๋ฉด contain ์ฆ‰, ํ”„๋กœํ† ํƒ€์ž…์— ์ถ”๊ฐ€ํ•œ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•จ๊ป˜ ์ถœ๋ ฅ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋งค์šฐ ํ˜ผ๋ž€์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์•ˆ์ด ์žˆ๋‹ค.

<script>
    for(var name in o){
        if(o.hasOwnProperty(name))
            console.log(name);  
    }
</script>

ํ”„๋กœํผํ‹ฐ์˜ ํ•ด๋‹น ๊ฐ์ฒด์˜ ์†Œ์†์ธ์ง€๋ฅผ ์ฒดํฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” hasOwnProperty๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

hasOwnProperty๋Š” ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ์†์„ฑ์˜ ์ด๋ฆ„์ด ๊ฐ์ฒด์˜ ์†์„ฑ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.

๋งŒ์•ฝ prototype์œผ๋กœ ์ƒ์† ๋ฐ›์€ ๊ฐ์ฒด๋ผ๋ฉด false๊ฐ€ ๋œ๋‹ค.

 hasOwnProperty๋Š” Object๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ ์ด๊ณ  ํ”„๋กœํผํ‹ฐ์— ํ•ด๋‹นํ•˜๋ฏ€๋กœ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.