์ถ์์ฐ์ฐ abstract operation ECMAScript ์ฌ์์์ ๋ด๋ถ ๋์์ ๊ตฌํ ์๊ณ ๋ฆฌ์ฆ์ ํํํ ๊ฒ
Object.prototype์ ํ๋กํ ํ์ ์ผ๋ก ๊ฐ๋ ๋น๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค
Object ์์ฑ์ ํจ์์ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์๊ฑฐ๋ undefined, null์ ์ธ์๋ก ์ ๋ฌํ๋ฉด์ ํธ์ถํ๋ฉด ๋ด๋ถ์ ์ผ๋ก ์ถ์ ์ฐ์ฐ OrdinaryObjectCreate๋ฅผ ํธ์ถํ์ฌ Object.prototype์ ํ๋กํ ํ์ ์ผ๋ก ๊ฐ๋ ๋น๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค
์ถ์์ฐ์ฐ OrdinaryObjectCreate๋ฅผ ํธ์ถํ์ฌ ๋น๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ๋ค
- ์ถ์์ฐ์ฐ OrdinaryObjectCreate๋ฅผ ํธ์ถํ์ฌ ๋น๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- ์ธ๋ถ๋ด์ฉ์ ๋ค๋ฅด๋ค(new.target ํ์ธ์ด๋ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ๋ ์ฒ๋ฆฌ ๋ฑ )
- ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํด ์์ฑ๋ ๊ฐ์ฒด๋ Object ์์ฑ์ ํจ์๊ฐ ์์ฑํ ๊ฐ์ฒด๊ฐ ์๋์ง๋ง, ๊ฐ์์ ์ธ ์์ฑ์ ํจ์ Object๋ฅผ ์์ฑ์ ํจ์๋ก ์์ฑํ๋ฏ๋ก(Object.prototype ์ ๊ทผ๊ฐ๋ฅ) ๋ณธ์ง์ ์ผ๋ก ํฐ ์ฐจ์ด๋ ์์