Java Script Object Notation
const data = `{"ticker":{"base":"BTC","target":"USD","price":"23682.42332106","volume":"12129.38925153","change":"58.44219786"},"timestamp":1658495405,"success":true,"error":""}`
JSON.stringify
get
post
status
Headers (body에 대한 정보)
헤더 쿼리
<promise ver.>
fetch('https://api.cryptonator.com/api/ticker/btc-usd')
.then(res => {
console.log("response", res)
return res.json();
})
.then(data => {
console.log("DATA PARSED...")
console.log(data.ticker.price)
})
.catch(err => {
console.log("error",err)
})
<async , await> - 비동기 함수
const fetchBitcoinPrice = async () => {
const res = await fetch('https://api.cryptonator.com/api/ticker/btc-usd')
const data = await res.json(); //.then으ㄹ 사용하지 않지만 promise가 resolve되는걸 기다림.
console.log(data.ticker.price);
}
< + try , catch>
const fetchBitcoinPrice = async () => {
try {
const res = await fetch('온전치 않은 api를 요구했을 때 오류를 나타나게 하는 방식 (try & catch')
const data = await res.json(); //.then으ㄹ 사용하지 않지만 promise가 resolve되는걸 기다림.
console.log(data.ticker.price);
} catch (err) {
console.log("ERROR!", err);
}
A Library for making HTTP requests
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
axios.get('https://api.cryptonator.com/api/ticker/btc-usd')
.then(res => {
console.log(res.data.ticker.price);
})
.catch(err => {
console.log("ERROR", err)
})
const fetchBitcoinPrice = async () => {
try {
axios.get('https://api.cryptonator.com/api/ticker/btc-usd')
const res = await console.log(res.data.ticker.price);
} catch(err) {
console.log("ERROR",err)
}
}
const jokes = document.querySelector('#jokes')
const getDadJoke = async () => {
const config = {headers : {Accept: 'application/json'} }
const res = await axios.get('https://icanhazdadjoke.com/', config)
const newLI = document.createElement('LI');
newLI.append(res.data.joke);
jokes.append(newLI);
}
<button 클릭시 joke 출력>
const jokes = document.querySelector('#jokes')
const button = document.querySelector('button');
// li에 추가하는 함수
const addNewJoke = async () => {
const jokeText = await getDadJoke();
const NewLI = document.createElement('LI');
newLI.append(jokeText);
jokes.append(newLI)
}
//json 형식으로 반환하기 (헤더 설정)
// API에서 joke만 json형식으로 추출해오는 함수
const getDadJoke = async () => {
try {
const config = {headers : {Accept: 'application/json'} }
const res = await axios.get('https://icanhazdadjoke.com/', config)
return res.data.joke;
} catch(err) {
return "NO JOKES AVAIABLE"
}
}
}
button.addEventListener('click',addNewJoke)
자바스크립트 객체가 서로의 기능을 상속하는 방식의 메커니즘이다.
const arr = [1,2,3]
arr.sing = function() {console.log("LA LA LA")}
//this는 메서드를 호출하는 문자열을 참조
//String 타입의 객체들에게 새로운 메소드를 부여하는 작업
String.prototype.yell = function() {
console.log(this.toUpperCase());
};
function Color(r,g,b) {
this.r = r;
this.g = g;
this.b = b;
}
//프로토타입의 메소드를 한 번 정의해주면 새로운 인스턴스를 만들때마다 해당 인스턴스에 적용되는 다른 메소드를 이중으로 만들어주지 않고 '재사용'이 가능해짐
Color.prototype.rgb = function() {
// r,g,b가 this이므로 객체 자체 내서의 값을 받음.
const {r,g,b} = this;
return `rgb(${r}, ${g}, ${b})`
}
const color1 = new Color(20,40,50);
//클래스 키워드로 클래스 정의(대문자)
class Color {
// 클래스의 인스턴스를 소환할때 constructor 함수가 가장 먼저 실행됨.
constructor(r,g,b,name) {
//우리가 반환 받을 색상 객체에 속성으로 추가됨
//this가 자동으로 새로운 객체를 참조함.
this.r = r;
this.g = g;
this.b = b;
this.name = name;
}
//메소드들은 자동적으로 프로토타입에 추가됨
innerRGB() {
return `{${this.r},${this.g},${this.b}}`
}
rgb(){
return `rgb{${this.innerRGB()})`
}
}
class Color {
constructor(r,g,b,name) {
//우리가 반환 받을 색상 객체에 속성으로 추가됨
//this가 자동으로 새로운 객체를 참조함.
this.r = r;
this.g = g;
this.b = b;
this.name = name;
}
innerRGB() {
return `{${this.r},${this.g},${this.b}}`
}
rgb(){
return `rgb{${this.innerRGB()})`
}
}
하나의 패밀리에 다 넣어서 클래스 및 모든 색상의 패턴을 정의한다.
extends
class Pet {
constructor(name,age){
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating !`
}
}
class Cat extends Pet{
meow() {
return "MEOWWW!!!!"
}
}
const cat1 = new Cat('mimi', 4);
class Dog extends Pet {
bark() {
return "WOOOFFFF!!"
}
}
class Dog extends Pet {
bark() {
return "WOOOFFFF!!"
}
eat() {
return `${this.name} scarfs hid food !`
}
}
super
class Cat extends Pet{
constructor(name,age,livesLeft = 9) {
super(name,age);
this.livesLeft = livesLeft
}
meow() {
return "MEOWWW!!!!"
}
}