9.1 Class basic syntaxclass User { constructor(name) { this.name = name; } sayHi() { alert(this.name); }}// Usage:let user = new User("John");user.sayHi();위 코드에서 이름은 constructor 이지만, new User("John")로 객체를 생성하면 자동으로 해당 메소드가 동작한다는 사실을 기억해두자. Java와 조금 다른 점이다. class User { constructor(name) { this.name = name; } sayHi() { alert(this.name); }}// class is a functionalert(typeof User); // f..
5.12 JSON methods, toJSONJSON.stringifyJSON.stringify - 객체를 JSON으로 변환JSON.parse - JSON을 객체로 변환종종 ajax 통신을 구현하면서 경험해본 메서드이다.let student = { name: 'John', age: 30, isAdmin: false, courses: ['html', 'css', 'js'], spouse: null};let json = JSON.stringify(student);alert(typeof json); // we've got a string!alert(json);/* JSON-encoded object:{ "name": "John", "age": 30, "isAdmin": false, "cours..
5.11 Date and timenew Date()로 생성한다. 1970년부터 ms 단위로 시간이 표현된다. 자바랑 큰 차이 없는 것으로 보인다.Access date componentsgetFullYear()getMonth()getDate()getHours(), getMinutes(), getSeconds(), getMilliseconds()getDat()모두 local time zone 기준으로 반환됨.Setting date componetssetFullYear(year, [month], [date])setMonth(month, [date])setDate(date)setHours(hour, [min], [sec], [ms])setMinutes(min, [sec], [ms])setSeconds(sec, ..
5.10 Destructuring assignmentArray destructuring|// we have an array with a name and surnamelet arr = ["John", "Smith"]// destructuring assignment// sets firstName = arr[0]// and surname = arr[1]let [firstName, surname] = arr;alert(firstName); // Johnalert(surname); // Smith// --------------------------let [firstName, surname] = "John Smith".split(' ');alert(firstName); // Johnalert(surname); ..
5.9 Object.keys, values, entriesObject.keys(obj)Object.values(obj)Object.entries(obj)위 함수들의 결과값은 실제 배열로 반환된다.Transforming objectsObjects는 배열로써 처리하는 함수들이 존재하지 않아서, 관련처리를 하고 싶으면 아래와 같이 해야한다. (잘 이해되진 않는다...)let prices = { banana: 1, orange: 2, meat: 4,};let doublePrices = Object.fromEntries( // convert prices to array, map each key/value pair into another pair // and then fromEntries gives bac..
5.7 Map and SetMap맵은 Object와 달리 어떤 타입이든 모두 키가 될 수 있다. (Object는 string, symbol)맵의 함수 및 속성들new Map()map.set(key, value) – 키에 값 저장 (Java에서는 put이었음)map.get(key) – 자바와 같음, 다만 존재하지 않을 시 undefined로 나옴map.has(key) – 존재 여부 판단.map.delete(key) – 삭제map.clear() – 모두 삭제map.size – 개수, 함수가 아닌 속성임에 주의map을 Object처럼 map[key] 방식으로 사용하지 않는 걸 추천한다. 물론, 잘 동작하지만 이렇게 사용할 경우 map이라는 자료구조가 아닌 일반 객체로 취급하는 것이기 때문이다. 객체를 키로 사..
5.6 IterablesSymbol.iterator (잘 이해가 안됨...)배열은 아니지만 셀 수 있는 객체가 있다. 해당 객체를 셀 수 있도록 하려면 Symbol.iterator가 필요하다.또한, 내부적으로 next 함수를 정의해야 하는데, 해당 함수는 {done: Boolean, value: any} 형태의 객체를 반환해야 한다.let range = { from: 1, to: 5};// 1. call to for..of initially calls thisrange[Symbol.iterator] = function() { // ...it returns the iterator object: // 2. Onward, for..of works only with the iterator object b..
5.5 Array methods여러 메소드들을 좀 더 알아보자.Add/remove itemssplice배열 내부의 요소가 삭제되어도, 배열의 길이가 줄지는 않는다. delete는 값을 삭제하는 것이기 때문이다. let arr = ["I", "go", "home"];delete arr[1]; // remove "go"alert( arr[1] ); // undefined// now arr = ["I", , "home"];alert( arr.length ); // 3보통 요소를 삭제하면 우리는 해당 배열의 길이도 자연스럽게 줄어드는 것을 기대하는데, 이를 위해 splice를 사용할 수 있다. let arr = ["I", "study", "JavaScript"];arr.splice(1, 1); // from ..