{a: 123, b: "ABC", c: true, d: {}}
{book: function(){코드}}
var obj = {};
obj.abc = 123;
//obj 오브젝트에 프로퍼티 이름으로 abc가 없으면 abc:123이 추가, 있으면 프로퍼티 값이 123으로 변경
var book = {};
book.title = "JS책";
log(book);
---
var book = {};
book["title"] = "JS책";
log(book);
---
var book = {title: "JS책"};
var varName = "title";
book[varName] = "HTML책";
log(book);
---
//세 경우 다 실행 결과 {title: HTML책}
오브젝트에서 프로퍼티 값 추출
obj 오브젝트에 프로퍼티 이름인
var obj = {book: "책"};
log(obj.book);
log(obj["sports"]);
// [실행 결과]
// 책
// undefined
오브젝트에서 프로퍼티를 열거
형태:
for (변수 in 오브젝트) 문장;
for (표현식 in 오브젝트) 문장;
for (var item in sports){코드}
var sports = {
soccer: "축구",
baseball: "야구"
};
for (var item in sports){
log(item);
log(sports[item]);
}
/* [실행 결과]
* soccer
* 축구
* baseball
* 야구
*/
+ - * / % ++ -- new 등
Number 오브젝트
String 오브젝트
Boolean 오브젝트
Object 오브젝트
Array 오브젝트
Function 오브젝트
Math 오브젝트
Date 오브젝트
JSON 오브젝트
RegExp 오브젝트
글로벌 오브젝트
Number 오브젝트에 숫자 처리를 위한 함수와 프로퍼티가 포함되어 있으며, 함수를 호출하여 숫자 처리.
log(Number("123") + 500);
log(Number("ABC"));
log(Number(0x14)); // 16진수는 10진수로 변환
log(Number(true));
log(Number(null));
log(Number(undefined)); // NaN로 변환
// [실행 결과]
// 623
// NaN
// 20
// 1
// 0
// NaN
오브젝트로 인스턴트를 생성하여 반환
인스턴스 생성 목적
var obj = new Number();
log(typeof obj);
var oneObj = new Number("123");
var twoObj = new Number("456");
log(oneObj.valueOf());
log(twoObj.valueOf());
// [실행 결과]
// object
// 123
// 456
빌트인 Number 오브젝트로 새로운 Number 인스턴스를 생성
Primitive value
프리미티브 타입
📍 [[PrimitiveValue]] - 대괄호 2개 있으면 자바스크립트 엔진이 이름을 작성했다는 표시
var obj = new Number(123);
프리미티브 값을 갖는 오브젝트
Number 인스턴스의 프리미티브 값 반환
var value = 20;
log(20 === value.toString()); // 타입이 달라서 false
log(value.toString(16)); // 20을 16진수로 변환
log(20..toString()); // 점 2개 사용
// [실행 결과]
// false
// 14
// 20
숫자를 브라우저가 지원하는 지역화 문자로 변환
스펙 상태
숫자를 지수 표기로 변환하여 문자열로 반환
표시 방법
var value = 1234;
log(value.toExponential());
// [실행 결과]
// 1.234e+3
var value = 123456;
log(value.toExponential(3)); // 3자리로 반올림
// 1.235e+5
고정 소숫점 표기로 변환하여 문자열로 반환
표시 방법
var value = 1234.567;
log(value.toFixed(2));
log(value.toFixed()); // 파라미터 값을 0으로 간주
// 1234.57
// 1235
문자 처리를 위한 함수와 프로퍼티가 포함되어 있으며 함수를 호출하여 문자 처리를 하게 됨
한 줄에서 연결
var book = "12" + "AB" + "가나";
줄을 분리하여 연결
파라미터 값을 String 타입으로 변환하여 반환
가독성
String 인스턴스를 생성하여 반환
파라미터 값을 String 타입으로 변환
var value = "ABC";
for (var k = 0; k < value.length; k++){
log(value[k]);
};
// A
// B
// C
var value = " abcd ";
log(value.length);
log(value.trim().lenth);
// 8
// 4
var value = 123;
value.toString(); // Number 오브젝트의 toString()을 호출
"123".toString(); // String 오브젝트의 toString()을 호출
// 실행 결과 없음
var result = toString(123); // Object 오브젝트의 toString() 호출
log(result) // 123을 오브젝트로 간주하여 Object 형태를 문자열로 변환
// [object Undefined]
var value = "sports";
log(value.charAt(1));
log(value[1])); // ES5부터 이 형태로도 가능
log(value.charAt(12)); // 파라미터의 인덱스가 전체 문자열 길이보다 크면 빈 문자열 반환
log(value[12]); // 12번째 인덱스가 존재하지 않으므로 undefined 반환.
//charAt(12)에서 빈 문자열을 반환하는 것과는 차이 있음.
//개념적으로 undefined 반환이 적절 (undefined는 시맨틱적으로 인덱스 번째가 없다는 뉘앙스)
// p
// p
// ""
// undefined
var value = "123123";
log(value.indexOf(2)); // 2가 두 개이지만 처음 인덱스인 1을 반환
log(value.indexOf(23)); // 23이 존재하며 2가 검색된 인덱스를 반환
log(value.indexOf(2, 3)); // 3은 3번 인덱스부터 검색하므로 1이 아닌 4를 반환
log(value.indexOf(15));
log(value.indexOf(2, -1)); // 두 번째 파라미터가 0보다 작으면 처음부터 검색
log(value.indexOf(2, 9)); // 두 번째 파라미터가 length보다 크면 -1 반환
log(value.indexOf(2, "A")); // 두 번째 파라미터가 NaN이면 처음부터 검색
// 1
// 1
// 4
// -1
// 1
// -1
// 1
var value = "123123";
log(value.lastIndexOf(2));
// 4
var value = "1231231";
log(value.lastIndexOf(1, 4)); // 앞에 1231 빼고 231에서 검색
log(value.lastIndexOf(2, -1)); // 두 번째 파라미터가 0보다 작으면 -1 반환
// 3
// -1
var result = "sports".concat("축구".11);
log(result);
var obj = new String(123);
log(obj.concat("ABC"));
// sports축구11
// 123ABC
var value = "01234567";
log(value.substring(2, 5)); // 2~4번 인덱스
log(value.substring(5)); // 5~끝
log(value.substring()); // 전체
log(value.substring(5, 20)); // 두 번째 파라미터 값이 전체 length보다 크면 시작 인덱스부터 끝까지 반환
log(value.substring(-7, 2)); // 파라미터 값이 음수이면 0으로 간주
log(value.substring(5, 1)); // 첫 번째 파라미터 > 두 번째 파라미터 => 파라미터 값을 바꿔서 처리 (value.substring(1,5))
log(value.substring(5, "A")); // NaN은 0으로 간주. 따라서 이 경우는 value.substring(0, 5) 형태
// 234
// 567
// 01234567
// 567
// 01
// 1234
// 01234
var value = "01234567";
log(value.substr(0, 3); // 0번 인덱스부터 문자 3개 반환
log(value.substr(-3, 3);
log(value.substr(4)); // 두 번째 파라미터를 작성하지 않으면 첫 번째 파라미터부터 전체 반환
log(value.substr()); // 첫 번째 파라미터를 작성하지 않으면 0으로 간주 => 전체 반환
// 012
// 567
// 4567
// 01234567
var value = "01234567";
log(value.slice(1, 4));
log(value.slice(false, 4)); // false, undefined, null, 빈 문자열은 0으로 간주
log(value.slice("A")); // 첫 번째 파라미터가 NaN이면 0으로 간주
log(value.slice()); // 파라미터를 모두 작성하지 않으면 전체 반환
log(value.slice(5)); // 두 번째를 작성하지 않으면 length 사용
log(value.slice(5, 3)); // 첫 번째 >= 두 번째 -> 빈 문자열
// 파라미터 값이 음수면 length를 더해 사용. 더한 값이 0보다 작으면 0을 사용
log(value.slice(4, -2));
log(value.slice(-5, -2));
log(value.slice(-2, -5));
// 123
// 0123
// 01234567
// 01234567
// 567
// ""
// 45
// 345
// ""
매치 결과를 배열로 반환
정규 표현식
// 매치는 정규 표현식 용어
var value = "Sports";
log(value.match(/s/); // 정규 표현식으로 소문자 s를 매치. "Sports" 끝에 s가 있으므로 매치되며 매치된 문자를 배열로 반환
log(value.match("spo")); // spo가 있으나 대문자 s이므로 null 반환
// [s]
// null
var value = "abcabc";
log(value.replace("a", "바꿈"));
log(value.replace(/a/, "바꿈")); // 처음 하나만 바꿈
fuction change(){
return "함수";
};
log(value.replace(/a/, change())); // 함수를 실행하고 반환된 값으로 바꿈
// 바꿈bcabc
// 바꿈bcabc
// 함수bcabc
var value = "cbacba";
log(value.search(/a/));
log(value.search("K"));
// 2
// -1
log("12_34_56".split("_"));
// [12, 34, 56]
var value = "123";
log(value.split("")); // 문자를 하나씩 분리하여 반환
log(value.split()); // 분리 대상 전체를 하나의 배열로 반환
// [1, 2, 3]
// [123]
var value = "12_34_56_78";
log(value.split("_", 3)); // 두 번째 파라미터에 숫자를 작성하면 앞에서부터 수만큼만 반환
value = "123";
log(value.split("A")); // 분리자가 분리 대상에 없으면 분리 대상 전체를 하나의 배열로 반환
// [12, 34, 56]
// [123]
var value = "1Aa가";
for (var k = 0; k < value.length; k++){
log(value.charCodeAt(k));
};
log(value.charCodeAt(12));
// 49
// 65
// 97
// 44032
// NaN
파라미터의 유니코드를 문자열로 변환하고 연결하여 반환
작성 방법
log(String.fromCharCode(49, 65, 97, 44032));
// 1Aa가
var value = "나";
log(value.localCompare("가"));
log(value.localCompare("나"));
log(value.localCompare("다"));
// 1
// 0
// -1