
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
`