function aaa() {

ย  ย  this.text = "aaํ…์ŠคํŠธ";

ย  ย  this.sound = "aa์‚ฌ์šด๋“œ";

ย  ย  this.move = "aa๋ฌด๋ธŒ";

ย  ย  this.objects = [];

}

aaa.prototype.addObj = function(obj) {

ย  ย  this.objects.push(obj);

}

aaa.prototype.remObj = function() {

ย  ย  this.objects.pop();

}

aaa.prototype.allGet = function(value) {

ย  ย  return eval("this.objects[this.objects.length-1]."+value);

}

aaa.prototype.allGet2 = function(value) {

ย  ย  var obj = this.objects[this.objects.length-1];

ย  ย  switch (value) {

ย  ย  ย  ย  case "text":

ย  ย  ย  ย  ย  ย  return obj.text;

ย  ย  ย  ย  ย  ย  break;

ย  ย  ย  ย  case "sound":

ย  ย  ย  ย  ย  ย  return obj.sound;

ย  ย  ย  ย  ย  ย  break;

ย  ย  ย  ย  case "move":

ย  ย  ย  ย  ย  ย  return obj.move;

ย  ย  ย  ย  ย  ย  break;

ย  ย  }

}

function bbb() {

ย  ย  this.text = "bbbํ…์ŠคํŠธ";

ย  ย  this.sound = "bbb์‚ฌ์šด๋“œ";

ย  ย  this.move = "bbb๋ฌด๋ธŒ";

}


var a = new aaa();

var b = new bbb();

a.addObj(a);

a.addObj(b);

console.log(a.allGet("text"));

console.log(a.allGet("sound"));

console.log(a.allGet("move"));

console.log(a.allGet2("text"));

console.log(a.allGet2("sound"));

console.log(a.allGet2("move"));

a.remObj();

console.log(a.allGet("text"));

console.log(a.allGet("sound"));

console.log(a.allGet("move"));

console.log(a.allGet2("text"));

console.log(a.allGet2("sound"));

console.log(a.allGet2("move"));




์ € ๋ฐ‘์— ๊ธ€๋ณด๊ณ  ํ•ด๋ดค๋Š”๋ฐ ๊ธ€์˜ ์š”์ง€๋Š” ๋ณ€์ˆ˜๋งˆ๋‹ค ๊ฒŸํ„ฐ ์…‹ํ„ฐ ๊ท€์ฐฎ๋‹ค๋‹ˆ๊นŒ


allGetํ•จ์ˆ˜์ฒ˜๋Ÿผ evalํ•จ์ˆ˜๋กœ ๋ณ€์ˆ˜์ง€์ •ํ•˜๋˜๊ฐ€ (๋Œ€์‹  ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ evalํŠน์ง•์ž„)


allGet2ํ•จ์ˆ˜์ฒ˜๋Ÿผ switch๋ฌธ์œผ๋กœ ๊ณจ๋ผ๋‚ด๋˜๊ฐ€


๋‘˜๋‹ค ํ•จ์ˆ˜๋งค๊ฐœ๋ณ€์ˆ˜๋กœ text, sound, move ์ง์ ‘ ์จ์ค˜์•ผํ•จ ์ด๊ฑฐ๋„ ๊ท€์ฐฎ์œผ๋ฉด.. ์‹คํ–‰ํšŸ์ˆ˜๋งˆ๋‹ค ๋ฐ”๋€Œ๊ฒŒ ํ•˜๋˜๊ฐ€ ํ•ด์•ผํ• ๋“ฏ


aaa.prototype.allSet = function(value, value2) {