정보실

웹학교

정보실

javascript JavaScript 객체 프로토 타입을 수정하지 않아야 하는 이유

본문

JavaScript 객체 프로토 타입을 수정하지 말아야 하는 이유와 대신해야 할 일을 알아보십시오.


프로그래머로서 우리가 먼저 배워야 할 기술 중 하나는 솔루션을 찾는 방법입니다.


구글은 당신의 친구입니다. 그리고 2009 년 이후의 StackOverflow 답변은 2019+ 문제에 대한 완벽한 솔루션입니다.


특정 사이트나 개인 블로그에서 내장 Objects 프로토 타입을 수정하는 코드가 표시되는 경우가 있습니다.


https://flaviocopes.com/javascript-why-not-modify-object-prototype/ 


이 예제와 같이, insert 메소드를 추가하여 Array 객체 프로토 타입이 향상되었습니다.


Array.prototype.insert = function(index, item) {
  this.splice(index, 0, item)
}


이런 식으로 배열을 가질 수 있고 insert()를 호출 할 수 있습니다.


['red', 'blue'].insert(0, 'yellow')


편리합니다. 이러한 함수를 정의하고 그 범위에 대해 걱정할 필요 없이 모든 배열에서 사용할 수 있도록 Array 객체에 연결합니다.


그러나 당신이 할 수 있다고  해서 반드시 그렇게 해야 하는 것은 아닙니다.


이 방법의 문제점은 무엇입니까?


가능한 충돌 


사용하는 라이브러리가 그러한 것을 구현한다고 가정하십시오. 그리고 가져온 다른 라이브러리도 동일합니다. 아마도 방법이 약간 다르게 작동하고 그렇지 않을 때까지 문제가 없는 것처럼 보입니다.


라이브러리를 수정할 수는 없지만 여전히 사용하고 싶기 때문에 큰 문제가 있습니다.


미래를 보장하는 코드 


다음 버전의 JavaScript가 Array.insert 메소드를 구현한다고 가정하십시오. 다른 서명으로. 이제 어떻게 됩니까? 돌아가서 작성한 모든 코드를 다시 작성해야 합니다. 아마도 고객에게는 더 이상 일하지 않을 것입니다.


아니면 다른 사람들이 자신의 프로젝트에서 사용하는 라이브러리에서 이 작업을 수행했을 수도 있습니다. 훨씬 더 나빠질 것입니다.


이 접근 방식은 기술 부채만 만들며 문제를 유발합니다.


대신 무엇을해야합니까? 


라이브러리 파일에서 함수를 작성하고 사용하려는 경우 가져 오십시오. 제어 할 수 없는 개체는 수정하지 마십시오.


  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

페이지 정보

조회 17회 ]  작성일19-09-19 10:01

웹학교