const 객체 = new 객체 자료형 이름()
1) const 10 = new Number(10);
2) const 안녕하세요 = new String('안녕하세요')
3) const true = Boolean(true)
새롭게 생성된 숫자, 문자열, 불 자료는 더이상 단순한 기본 자료형이 아니라 속성을 가질 수 있는 '객체 자료형'으로 볼 수 있다.
>const f = new Number(123)
undefined
>typeof f
"object"
> f.sample = 10
10
>f
Number {123, sample:10}
>f+0
123
>f.valueOf()
123
*new 키워드를 사용하지 않을 경우, 함수가 자료형 변환 기능으로 작동하므로, 객체 자료형으로 변환하는 경우 'new' 키워드를 반드시 사용해야한다.
> const h = '안녕하세요'
undefined
> h.sample = 10
10 //일시적 승급에 의해 속성 추가
> h.sample
undefined // 일시적 승급이 종료되었으므로, 속성 값은 이미 사라져있다.
> Number.prototype.sample = 10
10
> const i = 123
undefined
> i.sample
10
> 123.sample
Uncaught SyntaxError: Invalid or unexpected token
> Number(123).sample
10
> '안녕'.sample
undefined
문자열에서 원하는 문자가 포함되어있는지 확인하는 방법
> const k = [1,2,3]
undefined
//indexOf로 문자열의 인덱스값 리턴하기(존재하지 않는경우 -1 리턴
>k.indexOf(2)
1
>k.indexOf(100)
-1
응용: 문자열.indexOf(answkduf) >= 0 으로 true인지 false인지 (포함되었는지, 없는지) 판별 가능
응용2: 위 내용을 메소드로 담기
contain()
//문자열에 prototype 속성 할당
String.prototype.contain = function (data) {
retrun this.indexOf(data) >= 0
}
//배열에 prototype 속성 할당
Array.prototype.contain = function (data) {
return this.indexOf(data) >= 0
}
const a = '안녕하세요'
console.log('안녕 in 안녕하세요:', a.contain('안녕'))
console.log('없는데 in 안녕하세요:', a.contain('없는데'))
// 안녕 in 안녕하세요: true
// 없는데 in 안녕하세요: false
const b = [123,456,789]
console.log('123 in [123,456,789]:', b.contain(123))
console.log('0 in [123,456,789]:', b.contain(0))
//123 in [123,456,789]: true
//0 in [123,456,789]: false