• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

오브젝트관련 질문입니다.

20.12.17 00:16 작성 조회수 117

0

var str = new String("abc")로 생성하는 방식이나

var str = "abc"방식이나 결국 아래의 방식또한 내부적으로 위의방식처럼 만들어지니 결국 new연산을 사용하든지 안 하든지 같은 것을 의미하는 것 아닌가요?  (혹시 객체가 만들어지고 저장되는 메모리 공간이 달라서 구별해 주어야 하는것인가요?)

답변 4

·

답변을 작성해보세요.

2

이것은 str 변수에 "abc"를 할당하는 것이므로 new String("abc") 개념으로 접근하지 않습니다.
"abc".length 형태가 new String("abc")으로 접근하는 개념입니다.

==> 이해했습니다. 제가 무엇을 잘못생각했는지!

JS를 먼저 이해하도록 하겠습니다.

1

엔진이 var str = "abc"을 만나게 되면 "abc"를 통해 str의 타입을 String으로 결정하고 String으로 결정되면 new String("abc")를 하게 되어 결국, str.length를 사용할 수 있게 되는 논리라고 이해했습니다...
==> 이것은 str 변수에 "abc"를 할당하는 것이므로 new String("abc") 개념으로 접근하지 않습니다.
"abc".length 형태가 new String("abc")으로 접근하는 개념입니다.

이 또한 사과드리겠습니다.
==> 사과할 사항은 아닙니다. 강좌 내용을 깊게 이해하면 내공이 쌓이고 비판력이 생기므로, 그 때 나만의 스타일을 만들기 바랍니다. 프로그램 언어를 바꾸거나 새로운 언어를 배우는 것은 중고급자도 어려워합니다. 어려운 이유를 전부 여기에 작성할 수는 없지만, 우선 하나를 들면, 알고 있는 자바와 비교는 해도 되지만 "자바의 이것은 자바스크립트의 이것이다"라고 대입해서는 안됩니다. 이것은 자바스크립트를 배우는 것이 아니라 알고 있는 자바를 확인하는 모습이기 때문입니다. 내공이 약할 때에는, 자바스크립트가 완전하게 내 것이 될 떄까지 잠시 자바는 잊고 자바스크립트 하나만 생각하기 바랍니다.

0

1. 엔진이 var str = "abc"을 만나게 되면 "abc"를 통해 str의 타입을 String으로 결정하고 String으로 결정되면 new String("abc")를 하게 되어 결국, str.length를 사용할 수 있게 되는 논리라고 이해했습니다....그래서 결국은  new String("abc")이나 "abc"방식이나 내부적으로 같은 것이라 봐도 무방할까요?라는 의도의 질문이었습니다.

2. 메모리 공간이라는 잘못된 용어사용 명심하겠습니다. 자바를 공부하다보니 비슷한 개념이 나왔는데 저장되는 메모리가 달라서 구별해 놓은 것인가?라는 생각이 들어 질문드렸습니다. 강좌의 있는 내용만 질문하도록 하겠습니다. 현재보고있는 js도서에서 객체라는 표현이 사용되어 무의식적으로 객체라는 용어를 사용한 것 같습니다. 이 또한 사과드리겠습니다.

0

var str = new String("abc")
==> 이것은 인스턴스를 만드는 것으로 인스턴스의 메소드 또는 프로퍼티를 사용하려는 것이 목적입니다.

var str = "abc"
==> 이것은 변수에 값을 할당하는 것입니다.
이것은 코딩해보면 알 수 있습니다.

str.split("")형태가, 내부에서 new String("abc")을 실행하여 인스턴스를 생성한 후, split()를 호출하는 개념입니다.
정확하게 이해되지 않으면, 코딩하면서 강좌를 반복해서 들어 보세요. 그러면 하나씩 점증적으로 이해가 될 것입니다.

혹시 객체가 만들어지고 저장되는 메모리 공간이 달라서 구별해 주어야 하는것인가요?
==> 강좌에서 이런 말을 한 적이 없습니다.
강좌에서 객체라는 단어를 사용하지 않습니다. 메모리 공간이 아니라 메모리입니다. 본인 생각에 강좌 내용을 맞추려고 하지 말고, 평판할 실력과 내공이 만들어 질 때까지는 강좌 내용을 이해하려고 노력하세요.
강좌에서 다루지 않은 단어 또는 내용, 강좌와 어울리지 않는 단어를 사용하는 질문은 앞으로 답하지 않겠습니다. 이것까지 알려주기에는 어려움이 있기 때문입니다. 어떤 기준으로 그 용어를 사용했는지 내가 이해하기 어렵기 때문입니다.