All ContentsCategoryAbout

프로토타입을 임의로 수정하면 안 되는 이유

06 July, 2020 - JavaScript - 1 min read

javascript

const arr = [1, 2, 3];
console.log(arr.__proto__ === Array.prototype); // true
console.log(arr.__proto__.__proto__ === Object.prototype); // true
console.log(arr.__proto__.__proto__.__proto__ === null); // true

const myFunc = () => {};
console.log(myFunc.__proto__ === Function.prototype); // true
console.log(myFunc.__proto__.__proto__ === Object.prototype); // true
console.log(myFunc.__proto__.__proto__.__proto__ === null); // true

const num = 5;
console.log(num.__proto__ === Number.prototype); // true
console.log(num.__proto__.__proto__ === Object.prototype); // true
console.log(num.__proto__.__proto__.__proto__ === null); // true

console.log(myFunc.__proto__.__proto__ === arr.__proto__.__proto__); // true
console.log(num.__proto__.__proto__ === myFunc.__proto__.__proto__); // true

위와 같이 모든 내장 프로토타입은 Object.prototype에서 만나게 되며, 그 끝에는 null이 있다.

그 말은 곧, 프로토타입 체인을 통해 다른 객체의 메서드를 가져올 수 있다는 것이며, 자주 사용하는 사용자 정의 메서드를 프로토타입에 아예 탑재해버리고 내장 메서드를 쓰듯이 쓸 수도 있다는 것이다.

하지만, 프로토타입은 전역에 영향을 미치며, 프로토타입에 사용자 정의 메서드를 넣는다는 것은 전역 객체를 만든다는 것이므로 오류와 혼란을 야기한다.


참고:

© 2023 intzzzero, Built with

Gatsby