Skip to content

Latest commit

ย 

History

History
143 lines (113 loc) ยท 3.12 KB

File metadata and controls

143 lines (113 loc) ยท 3.12 KB

Object ๊ฐ์ฒด

  • ์—ฐ๊ด€์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ๋ฌถ์–ด์ค€๋‹ค.
  • prototype์„ ์ด์šฉํ•ด ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ด์ „ Ultra -> Super -> Sub ๋ฅผ ์ƒ์†๋ฐ›๋˜ ์˜ˆ์‹œ์—์„œ ์‚ฌ์‹ค Ultra๋Š” Object๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ๋‹ค.
    • Object -> Ultra -> Super -> Sub
  • Object์˜ prototype์€ ๋ชจ๋“ ๊ฐ์ฒด์˜ prototype์ด๋‹ค. ๋ชจ๋“ ๊ฐ์ฒด์˜ ์›ํ˜•์ด๋‹ค.

Object์˜ ์ƒ์„ฑ์ž์˜ ๋ฉ”์†Œ๋“œ์™€ Object์˜ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด

// Object.keys() ์ƒ์„ฑ์ž ๋ฉ”์†Œ๋“œ
var arr = ['a','b','c'];
console.log(Object.keys(arr));

//Object.prototype.toString() ํ”„๋กœํ† ํƒ€์ž…๊ฐ์ฒด 
var a = new Array(1,2,3);
console.log(a.toSring());

1๋ฒˆ๊ณผ 2๋ฒˆ์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์ด ์™œ ๋‹ค๋ฅผ๊นŒ? 1๋ฒˆ Object.keys()๋Š” ์ธ์ž๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค.

Object.key(arr) //์˜ Object๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ผ ๊ฒƒ์ด๊ณ 
Object.keys = function(){}; // ์ด๋ ‡๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

2๋ฒˆ Object.prototype.toString()์€

Object.prototype.toSring = function(){};

์ด๋ ‡๊ฒŒ prototype์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๋ฉ”์†Œ๋“œ๊ฐ€ ํ”„๋กœํ† ํƒ€์ž…์ด๋ผ๋Š” ์˜๋ฏธ๋Š” new Object();๋ผ๊ณ  ์‹คํ–‰์„ ํ•˜๋Š” ์ˆœ๊ฐ„์— ์–ด๋– ํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  Object.prototype ์ด๋ผ๋Š” ํŠน์ˆ˜ํ•œ ํ”„๋กœํผํ‹ฐ์˜ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์›ํ˜•์œผ๋กœ ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” toString์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋‘ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

Object ๊ฐ์ฒด ํ™•์žฅ

Object.prototype.contain = function(needle){
    for(var name in this){
        if(this[name] === needle){
            return true;
        }
    }
    return false;
}

var o = {name: 'sla', 'city':'seoul'};
console.log(o.contain('sla'));

Object ํ™•์žฅ์˜ ์œ„ํ—˜

Object.prototype.contain = function(needle){
    for(var name in this){
        if(this[name] === needle){
            return true;
        }
    }
    return false;
}

var o = {name: 'sla', 'city':'seoul'};
//console.log(o.contain('sla'));

for(var name in o){
    console.log(o[name]);
} 

//๊ฒฐ๊ณผ๋Š”
/*
sla
seoul
ฦ’ (needle){
    for(var name in this){
        if(this[name] === needle){
            return true;
        }
    }
    return false;
}
*/

์ด๋ ‡๊ฒŒ contain ๊นŒ์ง€ ๊ฐ™์ด ๋‚˜์˜จ๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด์— ์˜ํ–ฅ์„ ์ค€๊ฑฐ๋‹ค.

Object.prototype.contain = function(needle){
    for(var name in this){
        if(this[name] === needle){
            return true;
        }
    }
    return false;
}

var o = {name: 'sla', 'city':'seoul'};
//console.log(o.contain('sla'));

for(var name in o){
    console.log(name);
} 
//๊ฒฐ๊ณผ
//name
//city
//contain 

contain ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

object์— ํ”„๋กœํผํ‹ฐ์— ์ถ”๊ฐ€ํ•œ๋‹ค๋Š”๊ฑด ํŽธ๋ฆฌํ•˜๋ฉด์„œ๋„ ์œ„ํ—˜ํ•˜๋‹ค.

๊ทธ๋ž˜๋„ ์จ์•ผํ•œ๋‹ค๋ฉด hasOwnProperty

Object.prototype.contain = function(needle){
    for(var name in this){
        if(this[name] === needle){
            return true;
        }
    }
    return false;
}

var o = {name: 'sla', 'city':'seoul'};
//console.log(o.contain('sla'));

for(var name in o){
    if(o.hasOwnProperty(name)){
    	console.log(name);    
    }
} 

์ž์‹ ์˜ property์ธ์ง€ ์ฒดํฌํ•ด์ค€๋‹ค. ๋ถ€๋ชจ๋กœ ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์€ ๊ฒƒ์€ ์ œ์™ธ๋œ๋‹ค.