55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결모던 자바스크립트(ES6+) 심화
소스코드 깃헙이 있나요?
소스코드 좀 보고싶은데요.없나요...?
- 미해결모던 자바스크립트(ES6+) 심화
5:00 event.type = undefined
노드17.9 버전입니다.위와같이 이벤트.타입이 없다고 하는데 원인을 모르겠습니다.
- 미해결모던 자바스크립트(ES6+) 심화
response object
fetch가 끝나면 프로미스를 반환하는거 아니였나요?..
- 미해결모던 자바스크립트(ES6+) 심화
비동기 통신, 실행
아 전에 질문이 이 파트를 이해를 잘 못한거 같은데 비동기 통신과 비동기 실행을 합치는 이유를 잘 모르겠네요 ㅠ비동기 통신만 하면 비동기 실행은 자동으로 되는게 아닌가요?..
- 미해결모던 자바스크립트(ES6+) 심화
프로미스를 쓰는 이유
제가 헤깔리는거 같긴한데 ㅠ create함수를 프로미스로 리턴하는 이유가 비동기 환경을 만들어주기 위해선가요??..프로미스가 없어도 xhr이 비동기로 작동되어 프로미스가 없어도 되는거 아닌가요?......onload에function(){this.status === 200 ? return JSON.parse(this.response): return this}이렇게 쓰면 작동이 안되는건가요?...xhr 은 비동기 환경에서만 작동하는 건가요?죄송합니다..
- 미해결모던 자바스크립트(ES6+) 심화
set() 트랩 준수사항에 대해서 질문입니다!
// 프로퍼티 값 설정 불가 const target = {}; Object.defineProperty(target, "point", { value: 500, writable: false }); const handler = { set(target, key, value, receiver) { target[key] = value + 200; } }; const obj = new Proxy(target, handler); console.log(obj.point = 100); // 100 console.log(obj.point); // 500 11분 10초 쯤 설명에서 console.log(obj.point = 100); 를 실행하면 값 그대로 100이 반환된다고 설명하셨는데 이 부분이 이해가지 않아서 여쭤보고 싶습니다! 한 번 엔진이 어떻게 돌아가는지 봐봤는데 value 값으로 100이 들어갔지만 왜 내부 메소드 [[Set]]이 실행됐는데 100이 반환됐는지 잘 이해가 가지 않네요ㅠㅠ set() 트랩이 호출되고 실행이 끝나면 value 값을 반환하는 건가요? 처음 set() 트랩 설명에서는 반환에서 처리 성공하면 true, 실패하면 false라고 나와있었거든요ㅠㅠ
- 미해결모던 자바스크립트(ES6+) 심화
throw 대신 return으로 에러를 반환하는 이유가 궁금합니다.
안녕하세요 선생님, 예제로 주신 fetch.js 파일의 try, catch 문에서 throw 대신 return을 사용하신 이유가 궁금합니다. const fetchData = { (... 생략) async main(url, option){ this.option = Object.assign({}, this.defaultFetch, option); this.setSendData(); try { const response = await fetch(url, this.option); return response.ok ? await this.convertData(response) : {error: response, errorCode: "OKError"}; } catch (error){ //server down return {error: error, errorCode: "NetWork"}; }; }, (... 생략) }; 저는 fetchData를 다음과 같이 사용할 것 같은데, 이 방식이 맞을까요? 만약 맞다면, 기능은 결국 동일하므로 그냥 단순히 취향 차이인지, 각각의 장단점이 있는지가 궁금합니다. // 에러를 return했을 때의 예상 코드 fetchData.main(url, option).then((someData) => { if (someData.error) { // TODO: 에러가 발생했을 때 수행할 작업 } }); // 에러를 throw했을 때의 예상 코드 fetchData .main(url, option) .then((someData) => {}) .catch((error) => { // TODO: 에러가 발생했을 때 수행할 작업 });
- 미해결모던 자바스크립트(ES6+) 심화
try-catch 사용에 대하여
선생님 좋은 강의 감사합니다! 다름이 아니라 제가 개인 프로젝트를 진행하고 있습니다. vue와 axios를 사용하고 있는데 이번 강의를 들으면서 고민이 생겨 질문 남깁니다. 위에 이미지를 보시면 저는 try-catch를 사용해서 에러처리를 해주고 있습니다. await postItem(obj)의 postItem(obj)가 axios.post 요청을 보내는 함수입니다. 선생님께서 강의 중에 "promise를 사용하면서 try-catch를 사용하는 부분이 고전적이다"라고 하셨는데 하신 말씀의 뜻이 promise를 사용할 때는 then, catch를 사용하는 것이 "스펙의 의도"에 더 맞다라는 뜻인가요? 그 얘기를 듣고 밑에 주석처럼 코드를 바꿔놓기는 했습니다. 저런 식으로 코드를 작성하는 걸 추천하시는지 여쭙고 싶습니다. 감사합니다.
- 미해결모던 자바스크립트(ES6+) 심화
클래스는 호이스팅이 되지 않나요?
안녕하세요. 개념이 헷갈리네요 ㅠ 강의 내용에 클래스는 호이스팅이 되지 않는다고 하셨는데요. 클래스도 호이스팅이 되지 않나요? 4:33에 소개된 2번째 코드 라인으로 오게 되면 초기화가 되지 않아서 에러가 발생하는건 아닌가요?
- 미해결모던 자바스크립트(ES6+) 심화
constructor(){ super() }; 에 대해 문의 드립니다.
선생님 안녕하세요. 항상 좋은 강의 감사드립니다! 이번 강의의 예제들에서 constructor(){ super() }; 를 작성하셨는데요, 이것을 작성하지 않아도 constructor(){}가 없으면, Point.prototype의 constructor를 호출하고, 그 후에 Array.prototype의 constructor를 호출하면서 생성하는 인스턴스의 __proto__.__proto__에 Array.prototype의 메소드가 첨부(참조)되는 것으로 이해하여, constructor(){ super() }; 작성하지 않고 인스턴스를 생성해도 동일한 결과를 같는 걸로 확인되는데 제가 확인한 게 맞을까요...? constructor(){ super() }; 를 작성하지 않아도 결과는 동일하지만 상속 받음을 조금 더 명시하기 위해 작성하는 것으로 이해해도 될까요...?
- 해결됨모던 자바스크립트(ES6+) 심화
질문있습니다~!
const xhr = new XMLHttpRequest();xhr.responseType = 'blob';xhr.onload = () => { const url = window.URL.createObjectURL(xhr.response); /* blob:http://localhost:63342/6737c626-231f-4158-8d46-ac1c207f2e99 */ console.log(xhr.responseURL); /* http://localhost:63342/13/file/video.mp4 */ console.log(url); const video = document.createElement('video'); video.onload = () => { /* 영상이 정상적으로 실행되면 revoke */ /* 해당 URL 에 대해 더이상의 접근을 못하게 하는것인가요? */ window.URL.revokeObjectURL(url); }; video.src = url; /* video Element 에 대한 부가기능 설정 */ video.autoplay = true; video.loop = true; document.querySelector('#show') .appendChild(video);};xhr.open('get', '../file/video.mp4');xhr.send(); 이번 영상 보면서 비동기로 BLOB 객체를 받는 방법을 배운 후 여러가지 시도를 해 보았습니다! video 타입도 문제없이 잘 재생되구요! 여기서 한가지 의문이 생겼습니다. xhr.responseURL 과 window.URL.createObjectURL 로 만든 url 은 기능은 같은 것 같더라구요. 다만 둘 다 로그를 찍어서 확인해보니, responseURL 쪽은 서버 쪽의 파일 Path 가 확연히 들어나는 반면에, createObjectURL 쪽은 새로고침 할 때마다 랜덤한 숫자들과 문자들로 이루어진 고유한 url을 가지고 있는것이 확인되었습니다. 이는 파일의 경로를 감춤으로서 해킹을 막고자 하기 위해 이렇게 createObjectURL을 쓰는 것인가요? 또 하나, video.onload 이벤트에서 window.URL.revokeObjectURL(url) 를 해서 그런지, 해당 URL 로 다시 접근 할 시에 NotFound가 떴습니다. 이 또한 역시 보안을 위해 해당 이벤트를 수행하는 것인가요? 그렇다면 blob 객체를 받아서 HTML에 뿌리고자 할 때는 위 두가지 사항은 필수조건처럼 생각해도 될런지요. 이런 의문을 가지게 된 배경은 그냥 document.createElement 한 후에 바로 src 만 설정해줘도 웹 페이지에서 정상적으로 보이는데, 이렇게까지 수고스럽게 코드를 작성하는 이유가 뭘까 개발자의 입장에서 한번 생각해보면서 자연스럽게 의문이 생기게 되었습니다. 항상 좋은 강의 감사합니다. 정말 많은 도움이 되고있습니다.
- 미해결모던 자바스크립트(ES6+) 심화
질문있습니다!
/* 4바이트 만큼의 버퍼 생성 */const buffer = new ArrayBuffer(4); /* 생성한 버퍼를 이용하여 DataView 생성 */const view = new DataView(buffer); /* setInt16 이면 2바이트 이므로 총 2개의 Element 생성 가능??? */ /* byteOffset 이 0부터 시작이면 2 일 때는 [0, 1, 2] 해서 3번째 Element 에 설정??? */view.setInt16(2, 100, true);console.log(view.getInt16(2, true));console.log(view.getInt16(2)); 위에서 setInt16 의 byteOffset에 2가 들어갔는데도 값이 설정되는 이유를 알고싶습니다. setInt8에서는 setInt8 로 하여 byteOffset을 이리저리 설정해 보며 실행해봤지만 거기서 제가 든 의문은 여기서 생성한 ArrayBuffer는 분명 4바이트인데, setInt16이면 하나의 엘리먼트에 2바이트가 할당이 되지 않나요? 엔디언...인디언... 이것 때문에 순서가 설정되는게 바뀌는건지 아직 감이 안잡히네요 ㅠㅠ
- 미해결모던 자바스크립트(ES6+) 심화
강의 자료 관련 문의
안녕하세요. 선생님! 강의를 처음부터 잘 듣고 있는 수강생입니다. 다른건 아니고 ES6 기초 강좌 때와 마찬가지도 디버깅 및 소스코딩 관련 자료는 따로 게시가 되는 것인지 궁금합니다. ES6 기초를 할 때 구조를 살펴보는 부분에서 많은 도움이 되어서 혹시나 해서 질문드립니다.
- 미해결모던 자바스크립트(ES6+) 심화
질문드립니다!
강의내용 외의 질문 일수도 있지만 궁금한점이 생겨 질문드립니다. 혹시 이런 식으로 오브젝트 안에서 함수와 변수를 프로퍼티형식으로 작성을 하다가 코드량이 많아져 파일단위로 나눠야 할때 그리고 값, 함수 등을 공유해야 할때 어떤식으로 값을 공유해야할까요? 현재 드는 생각으로는 '객체전체'를 export해서 필요한 파일에서 import하고 함수나 변수에 접근하는 방식이 떠오르는데 맞는 방식일까요?
- 미해결모던 자바스크립트(ES6+) 심화
실무 질문
좋은 강의 감사합니다.Proxy는 실무에서 보통 어떻게 사용이 되어 지나요?