• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

강의자입니다. 좋은 질문인데 답변을 작성하는 동안에 질문이 삭제되어 질문과 함께 작성합니다.

21.05.16 21:41 작성 조회수 183

1

안녕하세요. 질문이 있어 글을 남깁니다.

Number()라는 함수가 Number라는 오브젝트에 있다고 이해 했는데요. 오브젝트 내부에 있는 함수를 호출하려면 Number.Number( ) 처럼 해야 하는 거 아닌가요? ㅜㅜ 
밑에 있는 예로 들면 func()만 입력하면 안 되고 obj.func()로 입력해야 하는 것처럼요.
ex)
==
var obj = {func : function( ) {console.log('hi')};
obj.func();//hi 
===
Number.를 붙이지 않고 바로 Number('123') 이런식으로 함수를 호출할 수 있는 이유가 궁금합니다. 

------------  답글 ------------

좋은 질문입니다.

parseInt() 형태로 작성하는 것이 문법이듯이 Number("123") 형태도 문법입니다.

Number.number("123")처럼 정형적인 형태로 처음부터 설계했어야 한다고 생각합니다. 설계 실수라고 할 수는 없지만, 실수에 가까우며 (오브젝트.함수, 인스턴스.메소드) 형태로 호출하는 관점에서 보면 일관성이 떨어집니다.
Number.parseInt(), Number.isNaN() 등을 새로 만든 것은 이런 것을 염두에 둔 것으로 생각합니다.

이런 것을 추가하듯이 새로운 ECMAScript 에디션에 Number.number(), String.string() 형태가 추가되었으면 좋겠다는 생각이 듭니다.
이제와서 바꿀 수 없으므로 문법이라고 생각하는 것이 나을 것 같습니다.

답변 1

답변을 작성해보세요.

0

.