javascript object 이해하기(2-1) - String
javascript object 이해하기(1) - Number
javascript 빌트인(Built-in) 이해하기
javascript 연산자(Operator) 이해하기
Prototype과__proto__
이해하기(1)
Prototype과__proto__
이해하기(2)
javascript object 이해하기(2-1) - String에 이어서 javascript built-in object
에서 두번째로 String object
를 자세히 알아보자
속마음 : "123".toString();
와 같이 String 타입
을 String타입
으로 변환 . 왜 하나? 무의미한거 아니야?
const obj = String;
을 해서 obj
를 살펴보면, prototype
내에 toString()
함수가 있다. 즉, 인스턴스를 할당할 때, 이 prototype이 각 객체에게 상속되어 모든 객체들이 __proto__
내에 toString()
함수가 존재하여 활용 가능할 것이다.
아래 내용을 이해하기 위해서는
prototype
과__proto__
의 개념 이해가 필요하다. 아래 자료에 매우 쉽게 작성을 하였다^_^
Prototype과__proto__
이해하기(1)
Prototype과__proto__
이해하기(2)
String instance
의 부모는 String object
이므로 String object의
toString()
을 물려주고, String object
의 부모(String instance
의 조부모)는 Object object
로 Object object
의 toString()
을 물려주었다.
따라서 구조적으로, 두개의 toString()
이 존재하게 되었다.
String instance
< String object
가 남긴 toString()
< Object object가 남긴 toString()
그럼 만약, Object object
의 toString()
만 존재하고, String object
의 toString()
은 존재하지 않는다면 어떤 일이 일어날까? 어떤 문제가 있다면, 그것이 바로 String object
에도 toString()
이 존재하는 이유가 될것이다.
String object
에 toString()
이 없다.String instance
가 toString()
을 호출하면, Object object
의 toString()
을 활용하게 될 것이다.{key:value}
형식이어야하는데, 뜬금없이 "abc"
가 Object 객체
의 toString()
을 활용하게 된다면? "abc"
를 Object 타입
으로 변환하기때문에 내가 원하는 결과가 나오지 않는다.Object object
의 toString()
을 혹시라도 활용해서 예상못한 값을 얻을 수 있기때문에, 결과론적으론 문자열에서 문자열로 변환시키는 무의미한 String 객체
의 고유 toString()
을 만들어놓음 대부분의 built-in object
는 Object object
를 조상으로 하고있고, 이러한 이유로 대부분의 built-in object
는 toString()
과 valueOf()
를 자체적으로 가지고 있다.
const name = "goggling";
console.log(name.charAt(4)); // l
console.log(name.indexOf("g")); //0
console.log(name.indexOf("gl")); //3
console.log(name.indexOf("j")); // -1
console.log(name.lastIndexOf("g")); //7
console.log(name.lastIndexOf("j")); // -1
concat()
: 문자열 연결
toLowerCase()
: 영문 대문자를 소문자로 변환
toUpperCase()
: 영문 소문자를 대문자로 변환
subString()
: 파라미터 시작 인덱스부터 끝 인덱스 직전까지 substring 반환
substr()
: 파라미터 시작 인덱스부터 지정한 문자 수 substring 반환
slice()
: 파라미터 시작 인덱스부터 끝 인덱스 직전까지 반환
match()
: 매치 결과를 배열로 반환 (정규 표현식 패턴 적용가능)
replace()
: 매치 결과를 파라미터에 작성한 값으로 대체하여 반환 (정규 표현식 패턴 적용가능)
search()
: 매치 결과의 첫번째 인덱스 반환 (매치 안되면 -1 반환) (정규 표현식 패턴 적용가능)
split()
: 분리 대상을 분리자로 분리하여 배열로 반환 (정규 표현식 패턴 적용가능)
charCodeAt()
: 인덱스 번째의 문자의 유니코드의 코드 포인트 값을 반환
const value = "1Aa가";
console.log(value.charCodeAt(0)); //49
console.log(value.charCodeAt(12)); //NaN
fromCharCode()
: 파라미터의 유니코드를 문자열로 변환하고 연결하여 변환
console.log(String.fromCharCode(49,65,97,44032)); //1Aa가
localeCompare()
: 값을 비교하여 위치를 나타내는 값으로 반환( 1(앞), 0(같음), -1(뒤)), Unicode 사전 순으로 비교
❓ 이런 함수는 언제 활용될 수 있을까?
const value = "A";
console.log(value.localeCompare("a")); //-1
`