{"id":355,"date":"2026-05-17T06:46:33","date_gmt":"2026-05-16T22:46:33","guid":{"rendered":"https:\/\/junai.ai\/blog\/js-prototype-23\/"},"modified":"2026-05-17T07:11:51","modified_gmt":"2026-05-16T23:11:51","slug":"js-prototype-23","status":"publish","type":"post","link":"https:\/\/junai.ai\/blog\/js-prototype-23\/","title":{"rendered":"\ud504\ub85c\ud1a0\ud0c0\uc785 \uccb4\uc778 \u2014 class \ub4a4\uc5d0 \uc228\uc740 \uc9c4\uc9dc (\uace0\uae09 23\ud3b8)"},"content":{"rendered":"\n<!-- WordPress REST API \ubc1c\ud589\uc6a9 HTML (\uc790\ub3d9 \uc0dd\uc131) -->\n<!-- WP-FEATURED-MEDIA-ID: 549 -->\n<div style=\"max-width:800px;margin:0 auto;\">\n<style>\n\/* js-textbook \u2014 PostgreSQL \uad50\uc7ac \ub3d9\uc77c \ud314\ub808\ud2b8 *\/\n:root {\n  --color-primary: #336791;\n  --color-accent: #60a5fa;\n  --color-bg: #fafafa;\n  --color-bg-card: #ffffff;\n  --color-text: #1e293b;\n  --color-text-muted: #64748b;\n  --hero-start: #0f172a;\n  --hero-end: #336791;\n  --font-body: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;\n  --size-body: 17px;\n  --line-height: 1.75;\n}\n* { box-sizing: border-box; }\n.container { max-width: 760px; margin: 0 auto; padding: 0 22px 80px; }\n.hero { background: linear-gradient(135deg, var(--hero-start) 0%, var(--hero-end) 100%); color: #fff; padding: 72px 22px 56px; text-align: center; }\n.hero .badge { display: inline-block; background: rgba(96,165,250,0.18); color: var(--color-accent); padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 600; letter-spacing: 0.5px; margin-bottom: 18px; }\n.hero h1 { margin: 0 0 18px; font-size: 36px; line-height: 1.3; letter-spacing: -0.3px; }\n.hero p.sub { margin: 0 auto; max-width: 580px; font-size: 17px; color: #bfdbfe; }\n.hero img { width: 100%; max-width: 720px; height: auto; margin: 36px auto 0; display: block; border-radius: 10px; box-shadow: 0 8px 32px rgba(0,0,0,0.3); }\n.meta { display: flex; gap: 14px; justify-content: center; margin-top: 20px; font-size: 13px; color: #93c5fd; flex-wrap: wrap; }\n.meta span::before { content: \"\u00b7\"; margin-right: 14px; color: #1e3a8a; }\n.meta span:first-child::before { content: \"\"; margin: 0; }\narticle { background: var(--color-bg-card); margin-top: -36px; padding: 44px 28px; border-radius: 14px; box-shadow: 0 2px 18px rgba(0,0,0,0.06); }\narticle p { margin: 0 0 18px; }\nh2 { font-size: 28px; line-height: 1.35; letter-spacing: -0.3px; margin: 48px 0 18px; padding-bottom: 10px; border-bottom: 2px solid var(--color-primary); }\nh2:first-of-type { margin-top: 8px; }\nh3 { font-size: 21px; line-height: 1.4; margin: 30px 0 12px; color: var(--color-primary); }\ncode { background: #f1f5f9; color: #0f172a; padding: 2px 6px; border-radius: 4px; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 0.92em; }\npre { background: #0f172a; color: #e2e8f0; padding: 18px 20px; border-radius: 10px; overflow-x: auto; font-size: 14.5px; line-height: 1.65; margin: 18px 0; }\npre code { background: transparent; color: inherit; padding: 0; }\nul, ol { margin: 0 0 18px; padding-left: 24px; }\nli { margin-bottom: 8px; }\nstrong { color: #0f172a; }\n.databox { background: #eff6ff; border-left: 4px solid var(--color-primary); padding: 18px 20px; border-radius: 6px; margin: 22px 0; }\n.databox p { margin: 0 0 8px; }\n.databox p:last-child { margin: 0; }\n.databox strong { color: var(--color-primary); }\n.warnbox { background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); border-left: 4px solid #d97706; padding: 18px 20px; border-radius: 6px; margin: 22px 0; }\n.warnbox strong { color: #92400e; }\n.tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 22px 0; }\ntable { width: 100%; border-collapse: collapse; font-size: 15px; background: var(--color-bg-card); }\nth, td { padding: 11px 12px; text-align: left; border-bottom: 1px solid #e2e8f0; vertical-align: top; }\nth { background: #f1f5f9; font-weight: 700; color: #0f172a; }\ntd:first-child, th:first-child { font-weight: 700; }\n.cta { background: linear-gradient(135deg, #336791 0%, #60a5fa 100%); color: #fff; padding: 30px 24px; border-radius: 12px; margin-top: 44px; text-align: center; }\n.cta h3 { color: #fff; margin: 0 0 10px; }\n.cta p { margin: 0; color: #dbeafe; }\n.series-nav { background: #eff6ff; padding: 18px 22px; border-radius: 10px; margin-top: 24px; font-size: 14.5px; color: var(--color-text-muted); }\n.series-nav strong { color: var(--color-primary); }\n@media (max-width: 480px) {\n  .hero { padding: 52px 18px 44px; }\n  .hero h1 { font-size: 26px; }\n  .hero p.sub { font-size: 15px; }\n  article { padding: 28px 18px; border-radius: 10px; }\n  h2 { font-size: 22px; }\n  h3 { font-size: 18px; }\npre { font-size: 13px; padding: 14px 16px; }\n}\n@media (max-width: 560px) {\n  .tablewrap table, .tablewrap thead, .tablewrap tbody, .tablewrap tr, .tablewrap th, .tablewrap td { display: block; width: auto; }\n  .tablewrap thead { display: none; }\n  .tablewrap tr { margin: 0 0 14px; border: 1px solid #e2e8f0; border-radius: 10px; overflow: hidden; }\n  .tablewrap td { border: none; border-bottom: 1px solid #f1f5f9; padding: 9px 14px; }\n  .tablewrap td:first-child { background: #eff6ff; font-weight: 800; font-size: 15.5px; }\n  .tablewrap td:last-child { border-bottom: none; }\n  .tablewrap td[data-label]::before { content: attr(data-label) \" \u2014 \"; font-weight: 700; color: var(--color-primary); }\n}\n<\/style>\n<header class=\"hero\">\n  <span class=\"badge\">\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uad50\uc7ac \u00b7 23\ud3b8 \/ 26\ud3b8<\/span>\n  <h1>\ud504\ub85c\ud1a0\ud0c0\uc785 \uccb4\uc778 \u2014 class \ub4a4\uc5d0 \uc228\uc740 \uc9c4\uc9dc<\/h1>\n  <p class=\"sub\">class \uac00 \uc0ac\uc2e4\uc740 \ud504\ub85c\ud1a0\ud0c0\uc785\uc758 \uc637. __proto__ vs prototype.<\/p>\n  <div class=\"meta\"><span>\uace0\uae09<\/span><span>\uc77d\ub294 \uc2dc\uac04 7\ubd84<\/span><span>2026-05-17<\/span><\/div>\n  <img decoding=\"async\" src=\"https:\/\/junai.ai\/blog\/wp-content\/uploads\/2026\/05\/hero-194.jpg\" alt=\"\ud504\ub85c\ud1a0\ud0c0\uc785 \uccb4\uc778\uc774 \uac1d\uccb4\uc5d0\uc11c \ubd80\ubaa8\ub85c \uac70\uc2ac\ub7ec \uc62c\ub77c\uac00\ub294 \ud654\uc0b4\ud45c \ub3c4\uc2dd\">\n<\/header>\n\n<div class=\"container\">\n<article>\n\n<p>18\ud3b8\uc758 <code>class<\/code> \ub294 \uc0ac\uc2e4 <strong>\ud504\ub85c\ud1a0\ud0c0\uc785<\/strong> \uc704\uc758 \ubb38\ubc95\uc801 \uc124\ud0d5\uc785\ub2c8\ub2e4. JS \uc758 \uc9c4\uc9dc \uac1d\uccb4 \ubaa8\ub378\uc740 \ud074\ub798\uc2a4 \uae30\ubc18\uc774 \uc544\ub2c8\ub77c <strong>\ud504\ub85c\ud1a0\ud0c0\uc785 \uae30\ubc18<\/strong> \u2014 \uac1d\uccb4\uac00 \ub2e4\ub978 \uac1d\uccb4\ub97c \uc0c1\uc18d\ubc1b\uc2b5\ub2c8\ub2e4. 23\ud3b8\uc740 \uadf8 \uba54\ucee4\ub2c8\uc998\uc744 \uc9c1\uc811 \ub4e4\uc5ec\ub2e4\ubd05\ub2c8\ub2e4.<\/p>\n\n<h2>\ud55c \uc904 \uc815\uc758<\/h2>\n\n<div class=\"databox\">\n  <p><strong>\ud504\ub85c\ud1a0\ud0c0\uc785 \uccb4\uc778.<\/strong> \ubaa8\ub4e0 \uac1d\uccb4\ub294 \ub2e4\ub978 \uac1d\uccb4(=\ud504\ub85c\ud1a0\ud0c0\uc785) \ub97c \uac00\ub9ac\ud0a4\ub294 \ub0b4\ubd80 \ub9c1\ud06c <code>[[Prototype]]<\/code> \ub97c \uac00\uc9d0. \uc18d\uc131\u00b7\uba54\uc11c\ub4dc\ub97c \ucc3e\uc744 \ub54c \uc790\uae30\uc5d0\uac8c \uc5c6\uc73c\uba74 \uadf8 \ub9c1\ud06c\ub97c \ub530\ub77c \uc62c\ub77c\uac10 \u2192 \uac70\uae30\ub3c4 \uc5c6\uc73c\uba74 \ub610 \uc704\ub85c \u2192 null \uae4c\uc9c0.<\/p>\n<\/div>\n\n<h2>__proto__ vs prototype \u2014 \ud5f7\uac08\ub9ac\ub294 \ud55c \uc30d<\/h2>\n\n<pre><code>function Animal(name) {\n  this.name = name;\n}\nAnimal.prototype.speak = function () {\n  return `${this.name} \uc18c\ub9ac`;\n};\n\nconst dog = new Animal(\"\ucd08\ucf54\");\n\n\/\/ __proto__ : \uac1d\uccb4\uc758 \"\ub0b4 \ubd80\ubaa8\" \ub9c1\ud06c (\uc2e4\uc81c [[Prototype]])\ndog.__proto__ === Animal.prototype;   \/\/ true\n\n\/\/ prototype : \ud568\uc218(\uc0dd\uc131\uc790) \uc758 \"\ub0b4\uac00 \ub9cc\ub4e4 \uc778\uc2a4\ud134\uc2a4\uc758 \ubd80\ubaa8\" \uc124\uc815\nAnimal.prototype.speak;\ndog.speak();                          \/\/ \"\ucd08\ucf54 \uc18c\ub9ac\" \u2014 \uc790\uae30\uc5d4 \uc5c6\uc9c0\ub9cc prototype \uc5d0\uc11c \ucc3e\uc74c<\/code><\/pre>\n\n<div class=\"warnbox\">\n  <p><strong>\uc774\ub984\uc774 \ud5f7\uac08\ub9ac\ub294 \uc774\uc720.<\/strong> \u2460 <code>obj.__proto__<\/code> \u2014 \ubaa8\ub4e0 \uac1d\uccb4\uc5d0 \uc788\ub294 &#8220;\ubd80\ubaa8&#8221; \ub9c1\ud06c. \uc774\uc820 <code>Object.getPrototypeOf(obj)<\/code> \uad8c\uc7a5. \u2461 <code>Fn.prototype<\/code> \u2014 \ud568\uc218(\uc0dd\uc131\uc790) \ud55c\uc815. <code>new Fn()<\/code> \uc73c\ub85c \ub9cc\ub4e0 \uc778\uc2a4\ud134\uc2a4\uc758 \ubd80\ubaa8\uac00 \ub428. \ub458\uc740 \ub2e4\ub978 \uac1c\ub150\uc778\ub370 \ub458 \ub2e4 &#8220;prototype&#8221; \uae00\uc790\uac00 \ub4e4\uc5b4\uc788\uc5b4 \ud5f7\uac08\ub9bc.<\/p>\n<\/div>\n\n<h2>\uccb4\uc778 \ub530\ub77c \uac80\uc0c9<\/h2>\n\n<pre><code>const dog = new Animal(\"\ucd08\ucf54\");\n\n\/\/ dog.speak() \ub97c \ubd80\ub97c \ub54c JS \uc758 \uac80\uc0c9\n\/\/ 1. dog \uc790\uccb4\uc5d0 speak? \uc5c6\uc74c\n\/\/ 2. dog.__proto__ (= Animal.prototype) \uc5d0 speak? \uc788\uc74c \u2192 \ud638\ucd9c\n\/\/ 3. (\uc5c6\uc5c8\ub2e4\uba74) Animal.prototype.__proto__ (= Object.prototype) \uc5d0\uc11c \uac80\uc0c9\n\/\/ 4. (\uc5c6\uc5c8\ub2e4\uba74) Object.prototype.__proto__ === null \u2192 undefined<\/code><\/pre>\n\n<h2>Object.create \u2014 \ud504\ub85c\ud1a0\ud0c0\uc785 \uc9c1\uc811 \uc9c0\uc815<\/h2>\n\n<pre><code>const animal = {\n  speak() { return `${this.name} \uc18c\ub9ac`; },\n};\n\n\/\/ animal \uc744 \ud504\ub85c\ud1a0\ud0c0\uc785\uc73c\ub85c \uac16\ub294 \uc0c8 \uac1d\uccb4\nconst dog = Object.create(animal);\ndog.name = \"\ucd08\ucf54\";\ndog.speak();   \/\/ \"\ucd08\ucf54 \uc18c\ub9ac\"\n\nObject.getPrototypeOf(dog) === animal;   \/\/ true\n\n\/\/ \"\ud504\ub85c\ud1a0\ud0c0\uc785 \uc5c6\ub294\" \uae68\ub057\ud55c \uac1d\uccb4 (\uc0ac\uc804\ud615 \uc6a9\ub3c4)\nconst map = Object.create(null);\nmap.key = \"value\";\nmap.toString;   \/\/ undefined \u2014 Object.prototype \uc548 \uc0c1\uc18d \u2192 \ud0a4 \ucda9\ub3cc \uc704\ud5d8 \uc5c6\uc74c<\/code><\/pre>\n\n<h2>class \uc640 \ud504\ub85c\ud1a0\ud0c0\uc785 \u2014 \uac19\uc740 \uac83<\/h2>\n\n<pre><code>\/\/ class \ubb38\ubc95\nclass Animal {\n  constructor(name) { this.name = name; }\n  speak() { return `${this.name} \uc18c\ub9ac`; }\n}\n\n\/\/ \uc704\uc640 \ub3d9\uc77c\ud55c \uc61b \ud568\uc218 \ud328\ud134\nfunction Animal(name) {\n  this.name = name;\n}\nAnimal.prototype.speak = function () {\n  return `${this.name} \uc18c\ub9ac`;\n};\n\n\/\/ \uc778\uc2a4\ud134\uc2a4 \ub9cc\ub4e4\uae30\ub3c4 \uac19\uc74c\nconst d = new Animal(\"\ucd08\ucf54\");\nd.__proto__ === Animal.prototype;   \/\/ true<\/code><\/pre>\n\n<h2>extends \uc758 \uc2e4\uccb4 \u2014 \ud504\ub85c\ud1a0\ud0c0\uc785 \uccb4\uc778 \uc5f0\uacb0<\/h2>\n\n<pre><code>class Dog extends Animal {\n  bark() { return `${this.name} \uc9d6\uae30!`; }\n}\n\nconst d = new Dog(\"\ucd08\ucf54\");\n\n\/\/ \uccb4\uc778: d \u2192 Dog.prototype \u2192 Animal.prototype \u2192 Object.prototype \u2192 null\nd.bark();   \/\/ Dog.prototype.bark\nd.speak();  \/\/ Animal.prototype.speak (\ud55c \ub2e8\uacc4 \uc704)\n\nObject.getPrototypeOf(Dog.prototype) === Animal.prototype;   \/\/ true<\/code><\/pre>\n\n<h2>instanceof \ub3d9\uc791 \uc6d0\ub9ac<\/h2>\n\n<pre><code>\/\/ instanceof \ub294 \ud504\ub85c\ud1a0\ud0c0\uc785 \uccb4\uc778\uc744 \ub530\ub77c \uc62c\ub77c\uac00\uba70 \uac80\uc0ac\nd instanceof Dog;        \/\/ d.__proto__ === Dog.prototype \u2192 true\nd instanceof Animal;     \/\/ d.__proto__.__proto__ === Animal.prototype \u2192 true\nd instanceof Object;     \/\/ \ub354 \uc704\ub85c \uac70\uc2ac\ub7ec \u2192 true\n\n\/\/ \uc9c1\uc811 \uad6c\ud604\nfunction isInstanceOf(obj, Ctor) {\n  let proto = Object.getPrototypeOf(obj);\n  while (proto) {\n    if (proto === Ctor.prototype) return true;\n    proto = Object.getPrototypeOf(proto);\n  }\n  return false;\n}<\/code><\/pre>\n\n<h2>\uc65c \uc778\uc2a4\ud134\uc2a4 \uba54\uc11c\ub4dc\uac00 \uba54\ubaa8\ub9ac \ud55c \ubc88\ub9cc \u2014 \ud504\ub85c\ud1a0\ud0c0\uc785 \ub355<\/h2>\n\n<pre><code>class User {\n  constructor(name) { this.name = name; }\n  greet() { ... }     \/\/ \u2190 \uc778\uc2a4\ud134\uc2a4 \ubc31\ub9cc \uac1c\uc5ec\ub3c4 \uba54\uc11c\ub4dc 1\uac1c (User.prototype \uc5d0)\n}\n\n\/\/ \ube44\uad50: \ud074\ub85c\uc800\ub85c \ub9cc\ub4e4\uba74 \uc778\uc2a4\ud134\uc2a4\ub9c8\ub2e4 \ud568\uc218 \ubcf5\uc0ac\nfunction makeUser(name) {\n  return {\n    name,\n    greet() { ... },  \/\/ \u2190 \ub9e4 \ud638\ucd9c\ub9c8\ub2e4 \uc0c8 \ud568\uc218 \uac1d\uccb4\n  };\n}<\/code><\/pre>\n\n<div class=\"databox\">\n  <p><strong>\ud074\ub798\uc2a4\uac00 \ud074\ub85c\uc800\ubcf4\ub2e4 \uba54\ubaa8\ub9ac \ud6a8\uc728.<\/strong> \uba54\uc11c\ub4dc\uac00 <strong>\uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc prototype<\/strong> \uc5d0 \ud55c \ubc88\ub9cc \uc800\uc7a5. \uc778\uc2a4\ud134\uc2a4 N \uac1c\uc5ec\ub3c4 \uba54\uc11c\ub4dc\ub294 1\uac1c. \uadf8\ub798\uc11c \ub300\ub7c9 \uc778\uc2a4\ud134\uc2a4 \u2014 \ud074\ub798\uc2a4 \uad8c\uc7a5.<\/p>\n<\/div>\n\n<h2>\ud504\ub85c\ud1a0\ud0c0\uc785 \uc624\uc5fc \u2014 \ubcf4\uc548 \ud568\uc815<\/h2>\n\n<pre><code>\/\/ \uc0ac\uc6a9\uc790 \uc785\ub825\uc73c\ub85c Object.prototype \uc744 \uc624\uc5fc\uc2dc\ud0a4\uba74 \ubaa8\ub4e0 \uac1d\uccb4\uac00 \uc601\ud5a5\nconst malicious = JSON.parse('{\"__proto__\": {\"isAdmin\": true}}');\nObject.assign({}, malicious);   \/\/ \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub530\ub77c \uc704\ud5d8\n\nconst x = {};\nx.isAdmin;   \/\/ true (?) \u2014 \uc624\uc5fc\ub410\ub2e4\uba74\n\n\/\/ \ubc29\uc5b4\n\/\/ 1. Object.create(null) \ub85c \ubd80\ubaa8 \uc5c6\ub294 \uac1d\uccb4 \uc0ac\uc6a9\n\/\/ 2. JSON.parse \ud6c4 \uc9c1\uc811 \uac80\uc99d\n\/\/ 3. lodash \ub4f1\uc758 deep merge \ub294 \uc61b \ubc84\uc804\uc774 \ucde8\uc57d \u2014 \ucd5c\uc2e0 \ubc84\uc804 \uc0ac\uc6a9<\/code><\/pre>\n\n<div class=\"warnbox\">\n  <p><strong>prototype pollution.<\/strong> 2018~2019\ub144 lodash\u00b7jQuery \ub4f1\uc5d0\uc11c \ubc1c\uacac\ub410\ub358 \ud070 \ucde8\uc57d\uc810 \uc720\ud615. \uc0ac\uc6a9\uc790 \uc785\ub825\uc744 <code>__proto__<\/code>\u00b7<code>constructor<\/code> \uac19\uc740 \ud0a4\ub85c \uba38\uc9c0\ud558\uba74 \uae00\ub85c\ubc8c \uac1d\uccb4 \ubaa8\uc591\uc774 \ubc14\ub01c. \uc548\uc804\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\u00b7\uac80\uc99d \ud544\uc218.<\/p>\n<\/div>\n\n<h2>\ud55c \ud45c \u2014 \ud504\ub85c\ud1a0\ud0c0\uc785 vs \ud074\ub798\uc2a4<\/h2>\n\n<div class=\"tablewrap\">\n<table>\n  <thead>\n    <tr><th>\uac1c\ub150<\/th><th>\uc61b (\ud568\uc218 + prototype)<\/th><th>\ud604\ub300 (class)<\/th><\/tr>\n  <\/thead>\n  <tbody>\n    <tr><td data-label=\"\">\uc0dd\uc131\uc790<\/td><td data-label=\"\">function User() { }<\/td><td data-label=\"\">class User { constructor() { } }<\/td><\/tr>\n    <tr><td data-label=\"\">\uba54\uc11c\ub4dc \ucd94\uac00<\/td><td data-label=\"\">User.prototype.fn = &#8230;<\/td><td data-label=\"\">class \uc548 fn() { }<\/td><\/tr>\n    <tr><td data-label=\"\">\uc0c1\uc18d<\/td><td data-label=\"\">Child.prototype = Object.create(Parent.prototype)<\/td><td data-label=\"\">extends Parent<\/td><\/tr>\n    <tr><td data-label=\"\">\uc815\uc801<\/td><td data-label=\"\">User.static = &#8230;<\/td><td data-label=\"\">static fn() { }<\/td><\/tr>\n    <tr><td data-label=\"\">\uc9c4\uc9dc private<\/td><td data-label=\"\">\ubd88\uac00 (\uad00\uc2b5 _ )<\/td><td data-label=\"\">#field (ES2022)<\/td><\/tr>\n  <\/tbody>\n<\/table>\n<\/div>\n\n<h2>\ud55c \uc904 \uacb0\ub860<\/h2>\n\n<ul>\n  <li>\ubaa8\ub4e0 \uac1d\uccb4\ub294 \ubd80\ubaa8(<code>[[Prototype]]<\/code>) \uac00 \uc788\uace0, \uac80\uc0c9\uc740 \uccb4\uc778\uc744 \ub530\ub77c \uc704\ub85c.<\/li>\n  <li>class \ub294 prototype \uc758 \uae54\ub054\ud55c \ubb38\ubc95.<\/li>\n  <li>extends \ub294 prototype \uccb4\uc778 \uc5f0\uacb0.<\/li>\n  <li>\uba54\uc11c\ub4dc\ub294 prototype \uc5d0 \u2014 \uba54\ubaa8\ub9ac \ud6a8\uc728.<\/li>\n  <li>Object.create(null) \u2014 \ubd80\ubaa8 \uc5c6\ub294 \uc0ac\uc804\ud615\uc5d0 \uc720\uc6a9.<\/li>\n  <li>__proto__ \uc9c1\uc811 \uc870\uc791 \ud53c\ud558\uae30 \u2014 <code>Object.getPrototypeOf<\/code>\u00b7<code>Object.setPrototypeOf<\/code> \uc0ac\uc6a9.<\/li>\n<\/ul>\n\n<div class=\"cta\">\n  <h3>24\ud3b8 \u2014 \uc774\ud130\ub808\uc774\ud130\u00b7\uc81c\ub108\ub808\uc774\ud130<\/h3>\n  <p>function*\u00b7yield\u00b7Symbol.iterator. for&#8230;of \uc758 \ub0b4\ubd80 \ub3d9\uc791.<\/p>\n<\/div>\n\n<div class=\"series-nav\">\n  <strong>\ud83d\udcda \uc27d\uac8c \ubc30\uc6b0\ub294 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uad50\uc7ac<\/strong><br>\n  \uc774\uc804: 22\ud3b8 this \u00b7 \ud604\uc7ac: <strong>23\ud3b8 (\uace0\uae09)<\/strong> \u00b7 \ub2e4\uc74c \u2192 24\ud3b8 \uc774\ud130\ub808\uc774\ud130 \u00b7 \uc9c4\ud589: <strong>23\/26<\/strong>\n<\/div>\n\n<\/article>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>prototype \uccb4\uc778\u00b7__proto__\u00b7Object.create\u00b7instanceof. 26\ud3b8 \uad50\uc7ac 23\ud3b8.<\/p>\n","protected":false},"author":1,"featured_media":549,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-basic"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/comments?post=355"}],"version-history":[{"count":2,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/355\/revisions"}],"predecessor-version":[{"id":575,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/355\/revisions\/575"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media\/549"}],"wp:attachment":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media?parent=355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/categories?post=355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/tags?post=355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}