9.2 Class inheritanceThe "extends" keyword상속의 메커니즘은 자바와 크게 다르지 않은 것 같다.class Animal { constructor(name) { this.speed = 0; this.name = name; } run(speed) { this.speed = speed; alert(`${this.name} 은/는 속도 ${this.speed}로 달립니다.`); } stop() { this.speed = 0; alert(`${this.name} 이/가 멈췄습니다.`); }}let animal = new Animal("동물");// --------------------------class Rabbit extends Anima..
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..