[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
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์ 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๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋ ์ด๊ณ ํ๋กํผํฐ์ ํด๋นํ๋ฏ๋ก ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Js] ์ฐธ์กฐ | ๋ณต์ | ํจ์์ ์ฐธ์กฐ (0) | 2021.02.04 |
---|---|
[Js] ๋ฐ์ดํฐ ํ์ | ๋ ํผ๊ฐ์ฒด | ์์ ๋ฐ์ดํฐ ํ์ | ๊ฐ์ฒด ๋ฐ์ดํฐ ํ์ (0) | 2021.02.04 |
[Js] ํ์ค ๋ด์ฅ ๊ฐ์ฒด์ ํ์ฅ | Standard Built-in Object (0) | 2021.02.04 |
[Js] prototype | ์์ | javascript ์์ (0) | 2021.02.04 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค