function aaa() {

ย  ย  this.text = "aa";

ย  ย  this.objects = [];

}

aaa.prototype.addObj = function(obj) {

ย  ย  this.objects.push(obj);

}

aaa.prototype.remObj = function() {

ย  ย  this.objects.pop();

}

aaa.prototype.__defineGetter__("text", function() {

ย  ย  return this.objects[this.objects.length-1].text;

})


function bbb() {

ย  ย  this.text = "bb";

}



var a = new aaa();

var b = new bbb();


a.addObj(a);

a.addObj(b);

console.log(a.text)


ํ•˜๋ฉด bb๊ฐ€ ๋‚˜์˜ค๊ธด ํ•จ. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ objects ๋ผ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์— ๋ณธ์ธ์ด๋ž‘ ์ƒˆ๋กœ์šด ๋†ˆ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ๋ณธ์ธ์˜ ๋ฉค๋ฒ„๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ ๊ฐ์ฒด์— ์žˆ๋Š”๊ฑธ ํ˜ธ์ถœํ•˜๋„๋ก ๊ฒŒํ„ฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด a๊ฐ€ ๊ฐ์ฒด b๋กœ ๋ฐ”๋€Œ๊ฒŒ ํ–ˆ๋Š”๋ฐ


๋ฒˆ๋ฒˆํžˆ ๊ฒŸํ„ฐ ์ง€์ •ํ•˜๊ธฐ๊ฐ€ ๊ท€์ฐฎ๊ณ  ์ด๊ฑฐ ์…‹ํ„ฐ๋„ ์ง€์ •ํ•ด์•ผ๋˜์„œ -_- ๋„ˆ๋ฌด ๊ท€์ฐฎ์Œ... b์—์„œ ๋‹ค์‹œ a๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— a์˜ ์ •๋ณด๋Š” ์œ ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผํ•จ.


๊ฐ์ฒด a์™€ ๊ฐ์ฒด b๊ฐ€ ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ธด ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ๋™์ž‘์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๊ฐ’ ๋ณต์‚ฌ ํ•˜๋Š” ์‹์œผ๋กœ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Œ.


๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ์—ฌ?