๐ Reference
accessor property๋ 'getter(ํ๋์)'์ โsetter(์ค์ ์)โ ๋ฉ์๋๋ก ํํ๋๋ค.
๊ฐ์ฒด ๋ฆฌํฐ๋ด ์์์ getter์ setter ๋ฉ์๋๋ย get
๊ณผย set
์ผ๋ก ๋ํ๋ผ ์ ์๋ค.
์์ 1
let obj = {
get propName() {
// getter, obj.propName์ ์คํํ ๋ ์คํ๋๋ ์ฝ๋
},
set propName(value) {
// setter, obj.propName = value๋ฅผ ์คํํ ๋ ์คํ๋๋ ์ฝ๋
}
};
obj.propName
์ ์ฌ์ฉํด ํ๋กํผํฐ๋ฅผ ์ฝ์ผ๋ ค๊ณ ํ ๋ ์คํ๋๊ณ , setter ๋ฉ์๋๋ย obj.propName = value
์ผ๋ก property์ ๊ฐ์ ํ ๋นํ๋ ค ํ ๋ ์คํ๋๋ค.name
๊ณผย surname
์ด ์๋ ๊ฐ์ฒดย user
๋ฅผ ๋ง๋ค์ด๋ณด์.let user = {
name: "John",
surname: "Smith"
};
fullName
์ด๋ผ๋ property๋ฅผ ์ถ๊ฐํดย fullName
์ดย 'John Smith'
๊ฐ ๋๋๋ก ํด๋ณด์.fullName
์ดย 'John Smith'
๊ฐ ๋๋๋ก ํ๋ ค๋ฉด accessor property๋ฅผ ๊ตฌํํ๋ฉด ๋๋ค.let user = {
name: "John",
surname: "Smith",
get fullName() {
return `${this.name} ${this.surname}`;
}
};
alert(user.fullName); // John Smith
user.fullName
์ ์ฌ์ฉํด property ๊ฐ์ย ์ป์ ์ ์๋ค.fullName
์ getter ๋ฉ์๋๋ง ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ย user.fullName=
์ ์ฌ์ฉํด ๊ฐ์ ํ ๋นํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.let user = {
get fullName() {
return `...`;
}
};
user.fullName = "Test"; // Error (ํ๋กํผํฐ์ getter ๋ฉ์๋๋ง ์์ด์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.)
user.fullName
์ setter ๋ฉ์๋๋ฅผ ์ถ๊ฐํด ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๊ณ ์ณ๋ณธ๋ค.let user = {
name: "John",
surname: "Smith",
get fullName() {
return `${this.name} ${this.surname}`;
},
set fullName(value) {
[this.name, this.surname] = value.split(" ");
}
};
// ์ฃผ์ด์ง ๊ฐ์ ์ฌ์ฉํด set fullName์ด ์คํ๋ฉ๋๋ค.
user.fullName = "Alice Cooper";
alert(user.name); // Alice
alert(user.surname); // Cooper
fullName
์ด๋ผ๋ '๊ฐ์โ์ property๊ฐ ์๊ธด๋ค.