primitive
๋ป.. ์์์ ์ธ
์๋ฐ์คํฌ๋ฆฝํธ ํ์
์ค object(๋ฐฐ์ด,ํจ์)๋ง ๋บ ๋๋จธ์ง.
string, number, null, undefined, boolean
ํฌ์คํธ์์ด ํ๋ ์๋ค ์๊ฐํ์.
๋๋ ํฌ์คํธ์์
var a = 7;
var a = 6;
๋์ฅ์ ํฌ์คํธ์ a๋
์ด์ ์ 7์ด์๋ ํฌ์คํธ์์ ๋ฒ๋ ค์ง๊ณ ์๋ก ๋ง๋ค์ด์ง ํฌ์คํธ์ 6๋ง ๋จ๋๋ค.
reference
์ฐธ์กฐ
์, ์์ํ์
๋ฉ์ผ์ฃผ์ ๋ฆฌ์คํธ๋ฅผ ์ ๋๋ฐ ํฌ์คํธ์์ ๋๋ฌด ์์์ A4์ฉ์ง๋ก ์ ๋๋ค
๊ทธ๊ฑธ ๋๋ฒ์งธ ์๋์ ๋ฃ๋๋ฐ ํฌ์คํธ์์๋ ์๋์์น๋ฅผ ์ ์๋ค.
ํน์๋,
๋ฉ์ผ์ฃผ์ ๋ฆฌ์คํธ๋ฅผ ์์ด๋ฒ๋ฆด๊น๋ด ํ๋๋ ๋ณต์ฌ๋ฅผ ํ๋ค.
์ด๊ฑด ์ธ๋ฒ์งธ ์๋์ ๋ฃ๊ณ ํฌ์คํธ์์ ์ธ๋ฒ์งธ ์๋์์น๋ผ ์ ์๋ค.
var list1 = [1, 2, 3];
var list2 = [1, 2, 3];
console.log(list1 === list2);
list1๋ list2๊ฐ ๊ณผ์ฐ ๊ฐ์๊น? false
! ์ด์ ๋
object(๋ฐฐ์ด,ํจ์)๋ฅผ ์ด๋ค๋ณ์์ ํ ๋นํ๋ค. list1, list2์ธ๋ฐ
list1, list2๋ ํฌ์คํธ์์ด๋ผ ํ ์ ์๋ค. ์ด๋ ํ ์์น๊ฐ! ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ก์ ์์น๊ฐ์ด ๋ค๋ฅธ
list1, list2๋ ๋ค๋ฅด๋ค!
var list3 = [1,2,3];
var list4 = list3;
console.log(list3 === list4); //?
true
! ์ด์ ๋ list3์ ์์น๊ฐ์ธ๋ฐ list4์๋ค list3์ ์ฐธ์กฐ๊ฐ์ ๋ฃ์๊ฑฐ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ค!
var obj1 = { num: 1 }; //์๋กญ๊ฒ ๋ง๋ฌ โ
var obj2 = obj1;
var obj3 = obj2;
var obj4 = obj3;
var obj5 = obj4;
obj1.num++ //๊ฐ์ ์์ ํ๋ค.
console.log(obj5);
{num: 2}
์ฐธ์กฐ๊ฐ์ ๊ณ์ ๋ณ์์ ํ ๋นํ์ฌ ์ ์๋ฅผ ํ์๊ณ ๋ณ๊ฒฝ๋ ๊ฐ๋ ๋ฐ์์ด ๋๋ค.
var child1 = { age: 3 };
var child2 = { age: 5 };
var mother = {
age: 55,
children: [ child1, child2 ]
};
child1.age++;
child2.age++;
console.log(mother.children);
mother.children์ child1, child2์ ์ฐธ์กฐ๊ฐ์ ๋ฃ์๋ค.
๊ทธ ๊ฐ์ ++์ฆ๊ฐ ์์ผฐ๋ค.
mother์ ํ๋กํผํฐ children์๋ ์ํฅ์ ๋ฐ์๊น?
์ํฅ์ ๋ฐ๋๋ค.. ์? var child1, child2๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๊ธฐ ๋๋ฌธ์!
1์ฐจ ์์
function updateAge () { this.age++; };
var son = { age: 3, growUp: updateAge };
var daughter = { age: 7, growUp: updateAge };
var mother = { age: 38, growUp: updateAge, children: [son, daughter] };
var father = { age: 38, growUp: updateAge, wife: mother, children: [son, daughter] };
if ( father.age === mother.age ){
console.log('๋๊ฐ!');
}
if ( father.children === mother.children ){
console.log('๋ถ๋ถ!');
}
if ( father.growUp === son.growUp ){
console.log('์ฑ์ฅ๊ฐ๋ฅ..');
}
ํ๋์ฉ ์ดํด๋ณด์..
function updateAge () { this.age++; };
var son = { age: 3, growUp: updateAge };
var daughter = { age: 7, growUp: updateAge };
var mother = { age: 38, growUp: updateAge, children: [son, daughter] };
var father = { age: 38, growUp: updateAge, wife: mother, children: [son, daughter] };
if ( father.age === mother.age ){
console.log('๋๊ฐ!');
//๋ ๊ฐ์ primitive๋ก ๊ฐ์ด ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค.
}
if ( father.children === mother.children ){
console.log('๋ถ๋ถ!');
// [] === [] ์ด๋ฐ ๋น๊ต๋! ์์น๊ฐ์ ๊ผญ ์์ธํ ํ์ธํ์..
// ์์ ์์๊ฐ ๊ฐ์๊ฑด ์๋ฏธ๊ฐ ์๋ค!
// [son, daughter] ์ด ์์ฒด๋ ๊ฐ์ ์ ์์ผ๋ ์ด ์ฐธ์กฐ๊ฐ์ ์๋ก father.children์ด๊ณ
// mother.children ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด๊ณผ ํจ์๋ ์ด ์์น๊ฐ์ ํ์ธํด์ผํ๋ค..
}
if ( father.growUp === son.growUp ){
console.log('์ฑ์ฅ๊ฐ๋ฅ..');
// ํจ์๋ฅผ ๋ง๋ค๊ณ ๊ทธ ํจ์๋ฅผ updateAge์๋ค ๋ฃ์ด ๋์๋ค.
// upadateAge์ ์์น๊ฐ์ father.growUp์๋ค ์ ์ฅํ๊ณ son.growUp์๋ค ์ ์ฅํ๊ธฐ ๋๋ฌธ์
// true ๋ค!
/* ์ด์ ๊ฐ์๊ฑฐ๋ค..
var updateAge = function(){}
*/
}
2์ฐจ ์์
function updateAge () { this.age++; };
var son = { age: 3, growUp: updateAge };
var daughter = { age: 7, growUp: updateAge };
var mother = { age: 38, growUp: updateAge, children: [son, daughter] };
var father = { age: 38, growUp: updateAge, wife: mother, children: [son, daughter] };
var test1 = (mother.children[1] === father.children[1]);
var test2 = (mother === father.wife);
console.log(test1);
console.log(test2);
test1
[] ์ด ์์ ์๋ ์์ daughter๋ฅผ ์ฝ ์ฐ์ด์ ๋น๊ตํ๋ค. ๋๋ค primitive ๋ผ ๋น๊ต๋ ๊ฐ๋ฅํ๋ค.
true
!
test2
๊ฐ์ mother์ ์์น๋ฅผ ๊ฐ๋ฆฌ์ผ์ true
!
3์ฐจ ์์
function updateAge () { this.age++; };
var son = { age: 3, growUp: updateAge };
var daughter = { age: 7, growUp: updateAge };
var mother = { age: 38, growUp: updateAge, children: [son, daughter] };
var father = { age: 38, growUp: updateAge, wife: mother, children: [son, daughter] };
mother.children = father.children;
console.log(mother.children === father.children);
mother.children์๋ค๊ฐ father.children์ ์์น๋ฅผ ํ ๋นํ์๋ค.
์ด์ mother.children๊ณผ father.children์ ๊ฐ์ ์์น๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๋ค.
4์ฐจ ์์
function updateAge () { this.age++; };
var son = { age: 3, growUp: updateAge };
var daughter = { age: 7, growUp: updateAge };
var mother = { age: 38, growUp: updateAge, children: [son, daughter] };
var father = { age: 38, growUp: updateAge, wife: mother, children: [son, daughter] };
var children = mother.children;
mother.children = father.children;
console.log(mother.children === children);
children์ mother.children์ ํ ๋นํ๋ค.
mother.children์๋ father.children์ ํ ๋นํจ.
mother.children์ father.children์ ์์น๊ฐ์ ๊ฐ์ง๊ฒ ๋๊ณ ..
children์ mother.children์ ์์น๊ฐ์ ๊ฐ์ง๊ฒ ๋์ด ๋ค๋ฅด๋ค!
var children์ ๊ฐ์ด ์
๋ฐ์ดํธ ๋์ง์์.. 'ใ
'/
๊ณ์ ์ด ์์๊ฐ ์ดํดํ๊ธฐ ํ๋ค์๋ ์ด์ ๋ ์
๋ฐ์ดํธ ํ์ด ์๋์๋ค.
mother.children ์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
function updateAge () { this.age++; };
var son = { age: 3, growUp: updateAge };
var daughter = { age: 7, growUp: updateAge };
var mother = { age: 38, growUp: updateAge, children: [son, daughter] };
var father = { age: 38, growUp: updateAge, wife: mother, children: [son, daughter] };
var children = mother.children;
son.age = 2;
console.log(children[0].age); //2
children์ ์ฌ์ ํ ์
๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๊ณ , ์คํ๋ ค ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ค ๊ทธ๋์ ์ฐธ์กฐ๊ฐ์ด ๋ฌ๋ผ์ง๋ค๋ ํด์์ด ๋ ๋ํํ
์ดํดํ๊ธฐ ์ฝ๋ค.