๐ ๋ชฉ์ฐจ
hasOwnProperty๋?
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด(Object)๋ ์์ ๊ฐ์ฒด์ธ object๋ก๋ถํฐ ์ฌ๋ฌ ๋ฉ์๋(๊ธฐ๋ฅ)๋ฅผ ๋ฌผ๋ ค๋ฐ์ต๋๋ค. ๊ทธ ์ค ํ๋๊ฐ hasOwnProperty()์ ๋๋ค.
const user = {
name: "Hyonie",
};
console.log(user.hasOwnProperty("name")); // true
console.log(user.hasOwnProperty("toString")); // false
๐ ์ด ๋ฉ์๋๋ ํด๋น ์์ฑ์ด ์ง์ ์ ์๋ ๊ฒ์ธ์ง ํ์ธํด์ค๋๋ค.(์์๋ ์์ฑ์ false๋ก ํ๋จ)
โ ๋ฌธ์ ๋ ์ฌ๊ธฐ์๋ถํฐ ์์๋ฉ๋๋ค.
const params = {
hasOwnProperty: () => false,
id: 123,
};
console.log(params.hasOwnProperty("id")); // TypeError ๋ฐ์ ๊ฐ๋ฅ or false
๐ฑ hasOwnProperty ์์ฒด๋ฅผ ์์ฑ์ผ๋ก ๋ฎ์ด์ธ ๊ฒฝ์ฐ, ๊ธฐ์กด ๊ธฐ๋ฅ์ด ๋ง๊ฐ์ง ์ ์์ต๋๋ค.
๐ ๊ทธ๋์ ๋ฑ์ฅํ ์์ ํ ๋ฐฉ๋ฒ!
์ด ๋ฌธ๋ฒ์ ํญ์ ์์ ํ๊ฒ ์๋ํฉ๋๋ค.
Object.prototype.hasOwnProperty.call(obj, key);
์๋ํ๋ฉด:
- ์๋์ Object์์ ์ง์ ๋ฉ์๋๋ฅผ ๋น๋ ค์์
- ๋ด๊ฐ ๊ฒ์ฌํ๊ณ ์ถ์ ๊ฐ์ฒด(obj)์ ๊ฐ์ ๋ก ์คํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ ๋ฌธ๋ฒ ๊ตฌ์กฐ ์ค๋ช
๊ตฌ์ฑ | ์ค๋ช |
Object.prototype.hasOwnProperty | ์ง์ง ์ค๋ฆฌ์ง๋ ๋ฉ์๋ |
.call() | ํน์ ๊ฐ์ฒด์์ ์ด ๋ฉ์๋๋ฅผ ์คํ์ํด |
obj | ๊ฒ์ฌํ ๋์ ๊ฐ์ฒด |
key | ๊ฒ์ฌํ ์์ฑ ์ด๋ฆ(๋ฌธ์์ด) |
์์ ์ฝ๋
const obj = Object.create({ inheritedKey: "hello" });
obj.realKey = "hi";
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
console.log(`์ง์ง์์ฑ: ${key}`); // ์ง์ง์์ฑ: realKey
}
}
โ ์์๋ inheritedKey๋ ๊ฑธ๋ฌ์ง๋๋ค.
โจ ์ ๋ฆฌ
- hasOwnProperty๋ ๊ฐ์ฒด๊ฐ ์๊ธฐ ์์ ์ด ๊ฐ์ง ์์ฑ๋ง ํ์ธํ ๋ ์ฌ์ฉ
- Object.prototype.hasOwnProperty.call(obj, key)๋ ์ด๋ค ์ํฉ์์๋ ์์ ํ๊ฒ ์์ฑ์ ํ์ธํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ