객체 메소드 1. Object.assign() 객체 복제 user를 복사하고 싶다고 그냥 cloneUser에 대입해서 될까? const user = { name : 'susukkang', age : 30 } const cloneUser = user; 답은 '아니다' user 변수에는 객체 자체가 들어가 있는 것이 아니라, 객체가 저장되어 있는 메모리 주소인 객체에 의한 참조값이 저장된다. 그러므로 cloneUser에는 데이터가 들어가지않고 참조값이 들어간다. Object.assign() 사용 const newUser = Object.assign({}, user); 이렇게 사용해야 newUser에 user의 값들이 복제된다. 병합1 const newUser2 = Object.assign({gender:'f..
중복되는 기능을 하나의 파일로 관리하여 다른 파일에도 적용 가능하도록한다. 1. 파일 저장 모듈화된 기능을 저장할 파일을 아래 경로에 만든다. 위 생성된 파일에 2,3번을 추가한다. 2. 태그 동적 추가 및 CSS 적용 id는 확실하게 지어주는 것이 좋다. 'bar' 보단 'scroll-bar-indicator'로 지정한다. $('').css({ width: '50%', height: '5px', backgroundColor: 'cornflowerblue', position: 'fixed', left: 0, top:0 }).prependTo($('body')); 3. 이벤트 추가 $(document).scroll(function() { let x = $(document).scrollTop() * 100 ..
🔻화살표 함수, Arrow Function 자바의 람다와 비슷한 개념이다. 자바의 람다는 익명 객체의 추상 메소드를 표현하는 기술이었지만, 자바스크립트의 화살표 함수는 익명 함수를 표현하는 기술이다. 기본 구문 const add = (a, b) => a + b; 함수 선언 방법 1. 함수 선언문 function f1() { console.log('f1'); } f1(); 2. 함수 표현식 (리터럴) == 익명함수 const f2 = function () { console.log('f2'); } f2(); 익명이므로 그냥 호출할 수가 없어 변수에 저장하여 호출한다. 변수에 저장하지않고 호출하는 방법인 즉시호출이 있다. 즉시호출 전체를 묶고 호출한다. (function() { console.log('f2_1..
자바스크립트에서 객체를 여러개 만들 때, 유의해야 할 점은 실수로 프로퍼티의 오타나 생략했을 때 다른 객체가 생성된다. 🔻일반적인 객체 생성 o1.name = '홍길동'; o1.hello = function() { console.log('hello'); }; o2.name = '아무개'; o2.hllo = function() { console.log('안녕'); } 위 코드의 문제점은 오타를 내도 제어하지 못한다는 것이다. o2의 hello를 hllo로 잘못 작성하여 o1과 o2는 다른 객체로 생성되었다. 객체를 여러개 만들 때, 유의해야 할 점은 프로퍼티의 오타나 생략했을 때 다른 객체가 생성된다. 생성자 함수는 이 점을 보완할 수 있다. 🔻생성자 함수 자바의 클래스 개념을 가지고 있다. 자바의 생성자..
🔻스크롤 이벤트🔻 특정 위치로 스크롤이 내려가면 배경색과 글씨색을 바꾼다. 기본 뼈대 Title 스크롤 위치 확인하기 window.scrollY : 현재 문서나 요소의 세로(수직) 스크롤 위치를 나타내는 속성이다. document.getElementById('div1').getBoundingClientRect().top getBoundingClientRect().top 으로 문서 좌측 상단 기준으로 'div1' 의 위치를 알 수 있다. div1 요소가 화면의 맨 위에 위치하고 있다면, 위의 코드는 0을 반환한다. div1이 화면 위쪽에서 내려간 위치에 있다면, 양수의 값이 반환하며, div1이 화면 아래에 있다면, 음수의 값이 반환한다. 이벤트 전체코드 Title Lorem ipsum dolor sit ..
🔻배경 이미지 조작🔻 스트라이트 이미지 활용한다. 스프라이트 이미지는 여러 개의 이미지를 하나의 이미지로 합쳐서 관리하는 것으로 연속된 이미지가 하나의 이미로 합쳐져 있다면 backgroundPosition을 이동시켜 움직이는 것 같은 효과를 보여준다. 🔻heart🔻 '두근두근' 버튼을 누르면 backgroundPosition을 이동시킨다. 기본 뼈대 배경 이미지 조작 이벤트 원본이미지에서 하나의 하트만 보이게 너비 지정을 한다. 버튼을 누를 때마다 x의 위치를 감소시켜 이미지를 왼쪽으로 이동시킨다. 보이는 영역은 고정이고 연속된 이미지가 왼쪽으로 움직이면서 애니메이션과 같은 효과를 보여준다. 🔻puma🔻 사진을 클릭하면 스프라이트 이미지의 위치값이 변한다. 한 번 더 클릭하면 위치이동을 멈춘다. 기본 ..
🔻반응형 메뉴바 만들기🔻 메뉴를 하나 클릭하면 튀어나오는 애니메이션과 위치이동을 한다. 다른 메뉴를 클릭하면 원래 메뉴는 원위치로 들어가고 클릭한 메뉴가 튀어나온다. 같은 메뉴를 클릭하면 원위치로 돌아간다. 기본 뼈대 이벤트 olditem 이라는 변수에 이전 클릭한 메뉴 객체를 담아 현재와 같으면 원위치로 돌아가고 다른 메뉴이면 olditem를 원위치시키고 클릭한 메뉴를 위치이동 시킨다.
🔻transition 추가하기🔻 JavaScript에서 transition을 추가하기 위해 타이머를 사용한다. 상자를 클릭하면, 회전을 하고 다시 클릭하면 회전을 멈춘다. 기본 뼈대 transition 추가하기 상자 이벤트 위 방법은 script로만 조작하는 방법으로 현재는 이벤트와 속성에 대한 변화는 자바스크립트에서 작업하고, 타이머 역할은 CSS의 transition으로 자바스크립트와 CSS 함께 사용하는 추세이다. JavaScript + CSS 같이 사용하기 transition 추가하기 상자 위와 같이 작성하면 상자는 한번 클릭할 때마다 랜덤한 각도로 회전한다.
🔻박스 사이즈 조절하기🔻 우측하단부를 클릭하고 드래그를 했을 때, 불투명도가 낮아지고 마우스 위치만큼 박스 사이즈가 조절된다. 기본 뼈대 우측하단부 눌러 사이즈 조절하기 마우스가 상자의 우측 하단부를 눌렀는지 확인하는 함수를 만든다. function isVaild(event) { //1. 현재 상자의 크기 확인 let w = parseInt(window.getComputedStyle(box1).width); let h = parseInt(window.getComputedStyle(box1).height); //2. 상자 width, height에서 10px 안쪽 영역인지 확인 if (event.offsetX >= (w-10) && event.offsetX = (h-10) && event.offsetY