๊ฐ์ฒด(Object)๋?
๊ฐ์ฒด๋ JavaScript ์ธ์ด ๋ง์ด ๊ฐ์ง๊ณ ์๋ ํน์ง์ ๊ธฐ์ด๋ฅผ ์ด๋ฃจ๋ ์๋ฃํ์ผ๋ก,
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ ํ๋กํผํฐ ๋ฐ ํ๋กํผํฐ์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์กฐ์์ ๊ฐ ํ ์ ์๋
method์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด
์๋ฐ์คํฌ๋ฆฝํธ๋ ํด๋์ค ๊ธฐ๋ฐ์ด ์๋ `ํ๋กํ ํ์ `์ ๊ธฐ๋ฐ์ผ๋กํ๋ ๊ฐ์ฒด ๊ธฐ๋ฐ ์ธ์ด์ด๋ค. ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด๋ ํ๋กํ ํ์ ๊ฐ์ฒด๋ผ๋ ๊ฐ๋ ์ด ์์ผ๋ฉฐ, ์๋ก์ด ๊ฐ์ฒด์ ์ด๊ธฐ ์์ฑ์ ๊ฐ์ ธ์ค๋ ํ ํ๋ฆฟ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฐ์ฒด์ด๋ค. ๊ฐ์ฒด ์ํ์ธ ํ๋กํ ํํ์ ์ด์ฉํ์ฌ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ฉฐ, ์์ฑ๋ ๊ฐ์ฒด๋ ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํ์ด ๋ ์ ์๋ค. ํ๋กํ ํ์ ์ธ์ด๋ ํด๋์ค ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ
- ๊ฐ์ฒด ์ด๋์ ๋ผ์ด์ ๋๋ ๋ฆฌํฐํธ
- ์์ฑ์ ํจ์
- Object.create๋ฉ์๋
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ๋์ ๋ ๊ฐ์ฒด๋ฅผ ์ธ์คํฐ์ค๋ผ๊ณ ํ๋ค.
</head>
<body>
<h3>๊ฐ์ฒด-์์ฑ</h3>
<script type="text/javascript">
var s;
//1.๊ฐ์ฒด์์ฑ-๊ฐ์ฒด๋ฆฌํฐ๋ ์ด์ฉ
//var obj = {}; // ๋น๊ฐ์ฒด
var obj = {
name : '์ด์๋ฐ',
age : 20
};
console.log(obj.name, obj.age);
//์์ฑ๊ฐ ๋ณ๊ฒฝ
obj.name = '๋ค์๋ฐ';
console.log(obj.name, obj.age);
//๋์ ์ผ๋ก ์์ฑ ์ถ๊ฐ
obj.city = '์์ธ';
console.log(obj.name, obj.age, obj.city);
var obj2 = {};
obj2.subject = '์๋ฐ'; // ๋์ ์ผ๋ก ์์ฑ ์ถ๊ฐ
obj2.score = 90;
console.log(obj2.subject, obj2.score);
//2.๊ฐ์ฒด์์ฑ-๊ฐ์ฒด๋ฆฌํฐ๋ ์ด์ฉ : ์์ฑ๊ณผ ๋ฉ์๋
var obj3 = {
name : 'ํ๊ธธ๋',
age : 20,
state : function() {
return this.age >= 19 ? '์ฑ์ธ' : '๋ฏธ์ฑ๋
์';
},
msg : function() {
//let s = state(); // ์๋ฌ
let s = this.state();
let m = `์ด๋ฆ : &{this.name},๋์ด:${this.age},&{s}`;
console.log(m);
}
};
obj3.msg();
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด ์์ฑ- ์์ฑ์๋ฅผ ์ด์ฉํ ๊ฐ์ฒด ์์ฑ</h3>
<script type="text/javascript">
//๊ฐ์ฒด ์์ฑ - ์์ฑ์ ํจ์๋ฅผ ์ด์ฉํ ๊ฐ์ฒด ์์ฑ
//์์ฑ์ ํจ์ ๋ง๋ค๊ธฐ
function User(name,age) {
this.name=name; // ํ๋ฆฌํผํฐ(์์ฑ)
this.age=age;
//๋ฉ์๋
this.state=()=> this.age >= 19? '์ฑ์ธ' : '๋ฏธ์ฑ๋
์';
this.msg = function() {
let s = this.state();
let m = `์ด๋ฆ:${this.name},๋์ด:${this.age},${s}`;
console.log(m);
};
}
//์์ฑ์ ํจ์๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด ์์ฑ
var obj = new User('๊น์๋ฐ',21);
obj.msg();
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด</h3>
<script type="text/javascript">
//์์ฑ์ ํจ์
function User(name) {
this.name=name;
}
var obj=new User('์๋ฐ');
console.log(obj instanceof User); // true
console.log(obj instanceof Object); // true
var obj2 = {};
console.log(obj2 instanceof Object); // true
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด - this</h3>
<script type="text/javascript">
//๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋์ ๋ฉ์๋ ๋ด์ this : ํด๋น ๋ฉ์๋ ํธ์ถ ๊ฐ์ฒด
var obj = {
name : '๋ค์๋ฐ',
sayName : function() {
//console.dir(this);
console.log(this.name);
}
};
obj.sayName();
//new๋ก ์์ฑ์ ํจ์๋ฅผ ํธ์ถํ ๋ ์์ฑ์ ํจ์์ this : ์๋ก ์์ฑ๋ ๊ฐ์ฒด
function Test(arg) {
this.name=arg;
this.getName=()=>this.name;
}
var obj2 = new Test('ํ๊ธธ๋');
console.log(obj2.getName());
//์ผ๋ฐํจ์ : ์ผ๋ฐ ํจ์์์ this -> ์ ์ญ๊ฐ์ฒด(window)
var user='์คํ๋ง'; // ์ ์ญ ๋ณ์. ์ ์ญ ๋ณ์๋ window์ ์์ฑ
var sayUser = function () {
console.log(this.user,user,window.user);
};
sayUser();
//๊ฐ์ฒด์์ this๋ ์์ ์ ๋ํ๋ด์ง๋ง, ๋ค๋ฅธ ๊ณณ์์๋ window๋ฅผ ๋ํ๋ด๋ฏ๋ก ์ฃผ์ ํ์
</script>
</body>
</html>
</head>
<body>
<h3>form ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์์์์ this : ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ํจ ๊ฐ์ฒด ์๊ธฐ ์์ </h3>
<p>form ์์ ์์์์ this.form : ํ์ฌ ๊ฐ์ฒด์ form ๊ฐ์ฒด </p>
<form name="myForm">
<p>
์ด๋ฆ : <input type="text" name="name">
</p>
<p>
๊ตญ์ด : <input type="text" name="kor" onchange="validate(this);">
</p>
<p>
์์ด : <input type="text" name="emg" onchange="validate(this);">
</p>
<p>
์ํ : <input type="text" name="mat" onchange="validate(this);">
</p>
<p>
<button type="button" onclick="send(this.form);">ํ์ธ</button>
</p>
</form>
<script type="text/javascript">
function send(f) {
//const f = document.myForm;
const inputELS = document.querySelectorAll('form input[type=text]');
for(let el of inputELS){
if(! el.value.trim()){
el.focus();
return;
}
}
/*
for (let i = 0; i < inputELS.length; i++) {
if (inputELS[i].value.trim()) {
inputELS[i].focus();
return;
}
if (i >= 1 && validate(inputELS[i]) === false) {
return;
}
}
*/
let name = f.name.value;
let kor = f.kor.value;
let eng = f.eng.value;
let mat = f.mat.value;
let s = `${name}:${kor},${eng},${mat}`;
alert(s);
}
function validate(inputEL) {
if (!/^\d{1,3}$/.test(inputEL.value)) {
inputEL.value = '';
inputEL.focus();
return false;
}
if (parseInt(inputEL.value) > 100) {
inputEL.value = '';
inputEL.focus();
return false;
}
return true;
}
</script>
</body>
</html>
๊ตฌ๋ฌธ ์ ๊ฐ
</head>
<body>
<h3>๊ตฌ๋ฌธ ์ ๊ฐ</h3>
<!--
- ๋ฐฐ์ด์ด๋ ๋ฌธ์์ด๊ณผ ๊ฐ์ด ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ 0๊ฐ ์ด์์ ์ธ์(ํจ์๋ก ํธ์ถํ ๊ฒฝ์ฐ) ๋๋
์์(๋ฐฐ์ด ๋ฆฌํฐ๋์ธ ๊ฒฝ์ฐ)๋ก ํ์ฅํ์ฌ 0๊ฐ ์ด์์ ํค-๊ฐ ์์ผ๋ก ๊ฐ์ฒด๋ก ํ์ฅ ์ํฌ์ ์๋ค.
-->
<script type="text/javascript">
function sum(x,y,z) {
return x+y+z;
}
const nums=[10,20,30];
//var s = sum(nums); // 10,20,30undefinedundefined <- ์ด์ํ ํ์
//var s=sum.apply(null,nums);
var s=sum(...nums);
console.log(s);
// ๊ฐ์ฒด ๋ฆฌํฐ๋์ ์์ฑ์ ์ ๊ฐ : ์ ๊ณต๋ ๊ฐ์ฒด๊ฐ ์์ ํ ์ด๊ฑฐํ ํ๋กํผํฐ๋ฅผ ์๋ก์ด ๊ฐ์ฒด๋ก ๋ณต์ฌ
var obj1 = {name:'ํ๊ธธ๋',age:20};
var obj2 = {name:'๊น์๋ฐ',city:'์์ธ'};
var obj3 = obj1; // ํ๋์ ๊ฐ์ฒด๋ฅผ ๋๋ณ์๊ฐ ์ฐธ์กฐ
console.log(obj3===obj1); // true
obj3.name='๋ค์๋ฐ';
console.log(obj1.name); // ๋ค์๋ฐ
//obj1 ๊ฐ์ฒด๋ฅผ ๋ณต์ ํด์ ์๋ก์ด ๊ฐ์ฒด ๋ง๋ค๊ธฐ
var cloneObj = {...obj1};
console.log(cloneObj.name); //๋ค์๋ฐ
console.log(cloneObj===obj1); // false
var mobj = {...obj1,...obj2}
console.log(mobj);
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด-๋์ ์ผ๋ก ํ๋กํผํฐ ์ถ๊ฐ</h3>
<script type="text/javascript">
var obj = {
name :'๋ค์๋ฐ'
};
console.log(obj.name); // ๋ค์๋ฐ
console.log(obj.age); // undefined
//๋์ ์ผ๋ก ์์ฑ ์ถ๊ฐ
obj.age=20;
console.log(obj.age); // 20
//์์ฑ์ ๊ฑฐ
delete obj.name;
console.log(obj.name);
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด -ํ๋กํผํฐ ๋์ด ๋ฐ ์ ๊ทผ</h3>
<script type="text/javascript">
var obj = {
name : 'ํ์๋ฐ',
age : 20,
result : function() {
return this.age >= 19 ? '์ฑ์ธ' : '๋ฏธ์ฑ๋
์';
}
};
//๊ฐ์ฒด์ ์์ฑ ์ ๊ทผ
console.log(obj, name); // ๋ํธ ํ๊ธฐ๋ฒ์ผ๋ก ์ ๊ทผ
console.log(obj['name']); //๋๊ดํธ ํ๊ธฐ๋ฒ์ผ๋ก ์ ๊ทผ
//๋ฉ์๋ ์ ๊ทผ
console.log(obj.result());
//๊ฐ์ฒด์ ํ๋กํผํฐ ๋์ด
for ( let o in obj) {
// o : ์์ฑ์ด๋ฆ
// ํ๋กํผํฐ : o -> name,obj[o] -> ํ์๋ฐ
// ๋ฉ์๋ : o -> result,obj[o]->f(){์์ค}
console.log(o, obj[o]);
}
console.log('----------------------');
//๊ฐ์ฒด์ ํ๋กํผํฐ ์กด์ฌ ์ฌ๋ถ ํ์ธ
console.log('name' in obj); // true
console.log('city' in obj); // false
//console.log(obj.name);
with(obj){
console.log(name); // obj.name
console.log(age); // obj.age
}
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด - ๋ฉ์๋ ์ถ๊ฐ</h3>
<script type="text/javascript">
function User(name,age) {
this.name=name;
this.age=age;
}
var obj = new User('์์ ์จ',20);
obj.score = 80; // obj ๊ฐ์ฒด์ scroe ์์ฑ ์ถ๊ฐ
obj.state = function () { // obj ๊ฐ์ฒด์ state() ๋ฉ์๋ ์ถ๊ฐ
return this.age >=19? '์ฑ์ธ': '๋ฏธ์ฑ๋
์';
};
console.log(obj.name,obj.score);
console.log(obj.state());
var obj2 = new User('๋จ๊ท ํ ๋ฐฐ',29);
console.log(obj2.name,obj2.score); // ๋จ๊ท ํ ๋ฐฐ undefined
console.log(obj2.state()); // obj2.state is not a function ์๋ฌ ํจ์๋ ์์ผ๋ฉด ํธ์ถํ ์์๋ค
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด - ๋ฉ์๋ / ํ๋กํผํฐ ์ถ๊ฐ</h3>
<!--
- prototype ํ๋กํผํฐ
: ์์ฑ์ ํจ์์ ์กด์ฌ
: ์์ฑ์๋ก ์์ฑ๋๋ ๊ฐ์ฒด์ ๋ฌผ๋ ค์ค ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์
-->
<script type="text/javascript">
function User(name) { // ์์ฑ์
this.name = name; // ํ๋กํ ํ์
์ ์ถ๊ฐ
this.age = 20; // ํ๋กํ ํ์
์ ์ถ๊ฐ. ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ์ ์์
this.state = function() { //ํ๋กํ ํ์
์ ์ถ๊ฐ
return this.age >= 19 ? '์ฑ์ธ' : '๋ฏธ์ฑ๋
์';
};
}
console.dir(User); // prototype ํ๋กํผํฐ๋ฅผ ํ์ธ
// User ์์ฑ์์ prototype์ scroe ๋ผ๋ ์์ฑ ์ถ๊ฐ
User.prototype.score = 80;
// User ์์ฑ์์ prototype์ msg ๋ผ๋ ๋ฉ์๋ ์ถ๊ฐ
User.prototype.msg = function() {
console.log(this.name + ':' + this.state() + ':' + this.score);
};
var obj = new User('์ด์๋ฐ');
console.log(obj.age);
console.log(obj.state());
obj.msg();
console.log('--------------------');
var obj2 = new User('์คํ๋ง');
obj2.age = 17;
console.log(obj2.age);
console.log(obj2.state());
obj2.msg();
console.log('--------------------');
</script>
</body>
</html>
</head>
<body>
<h3>๊ฐ์ฒด : ์ ์ ๋ฉ์๋</h3>
<script type="text/javascript">
//์ ์ ๋ฉ์๋ : ์์ฑ์์ ์์ฑ์ ์ง์ ์ง์ ๋ ๋ฉ์๋
function User(nmae) { // ์์ฑ์
this.name = name;
this.getName = function() {
return this.name;
};
}
User.state = function(age) { // ์ ์ ๋ฉ์๋
return age >= 19 ? '์ฑ์ธ' : '๊ธ์';
};
let obj = new User('ํ๋ณ')
console.log(obj.getName());
//console.log(User.getName()); // ์๋ฌ.๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ์ ๊ทผ ๊ฐ๋ฅ
console.log(User.state(17)); // static ๋ฉ์๋ ํธ์ถ
</script>
</body>
</html>
๊ตฌ์กฐ๋ถํด
๊ตฌ์กฐ๋ถํด(๋น๊ตฌ์กฐํ) ํ ๋น ๊ตฌ๋ฌธ์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ทธ ๊ฐ์ ๊ฐ๋ณ ๋ณ์์ ๋ด์ ์ ์๊ฒ ํ๋ JavaScript ํํ์์ด๋ค.
๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด
</head>
<body>
<h3>๊ตฌ์กฐ๋ถํด</h3>
<!--
๊ตฌ์กฐ๋ถํด(๋น๊ตฌ์กฐํ)ํ ๋น ๊ตฌ๋ฌธ์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ ํ์ฌ
๊ทธ ๊ฐ์ ๊ฐ๋ณ ๋ณ์์ ๋ด์ ์ ์๋ ์์ค ํํ์
-->
<script type="text/javascript">
// ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด
//๊ธฐ๋ณธ ๋ณ์ ํ ๋น
var arr = [10,20,30];
var [a,b,c]=arr;
console.log(a,b,c,a+b+c);
//์ ์ธ์์ ๋ถ๋ฆฌํ์ฌ ํ ๋น
var x, y;
//x = 10; y=20;
[x,y]=[1,2];
console.log(x,y);
//๊ธฐ๋ณธ๊ฐ
var x2,y2;
[x2=10,y2=20]=[1];
console.log(x2,y2);//1 20
//๋ณ์ ๊ฐ ๊ตํ
var m = 10;
var n = 5;
[m,n]=[n,m];
console.log(m,n);
//ํจ์์ ๋ฐํ๊ฐ์ธ ๋ฐฐ์ด์ ๋ถํด
function f() {
let aa = [10,20,30];
return aa;
}
var [a3,b3,c3] = f();
console.log(a3,b3,c3);
//๋ณ์์ ๋ฐฐ์ด์ ๋๋จธ์ง ๊ฐ ํ ๋น
var arr4 = [1,3,5,7,9];
var [a4,...b4]=arr4;
console.log(a4); // 1
console.log(b4); //[3,5,7,9]
</script>
</body>
</html>
</head>
<body>
<h3>๊ตฌ์กฐ๋ถํด</h3>
<script type="text/javascript">
//๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด
var obj = {name:'ํ๊ธธ๋',age:20};
var {name,age}=obj; // ๋ณ์๋ช
์ด ์์ฑ๋ช
๊ณผ ๋์ผ
console.log(name,age);
//var{p,q}=obj;
//console.log(p,q); undefined undefined//
var{name:p,age:q}=obj ;
console.log(p,q);
var a2,b2;
({a2,b2}={a2:1,b2:2}); // ์ ์ธ ์๋ ํ ๋น
console.log(a2,b2);
//๊ธฐ๋ณธ๊ฐ
var {x=10,y=5}={x:3};
console.log(x,y); // 3 5
var {n:nn=10,m:mm=15}={n:5};
console.log(nn,mm); // 5 undefined
</script>
</body>
</html>
'๐ป > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(50) [JavaScript] 6์ผ JavaScript ๊ฐ์ฒด - DOM (1) | 2024.04.28 |
---|---|
(50) [JavaScript] 6์ผ JavaScript ๊ฐ์ฒด - ํด๋์ค (1) | 2024.04.28 |
(49) [JavaScript] 5์ผ JavaScript ๋ด์ฅ๊ฐ์ฒด (0) | 2024.04.28 |
(48) [JavaScript] 4์ผ JavaScript Array (0) | 2024.04.24 |
(47) [JavaScript] 3์ผ JavaScript ๋ด์ฅ๊ฐ์ฒด (0) | 2024.04.23 |