본문 바로가기

js27

js 실행컨텍스트 소스코드의 타입 ㄱ. 전역코드  - 최상위 코드인 전역 스코프를 생성 후, 전역 객체와 연결  - 이를 위해 전역 코드가 평가되면 전역 실행 컨텍스트가 생성됨 ㄴ. 함수코드  - 함수마다의 지역 스코프를 생성하고, 지역변수|매개변수|arguments 객체 등을 관리함  - 생성한 지역 스코프를 전역 스코프에서 시작하는 스코프 체인의 일원으로 연결해야 함  - 이를 위해 함수 코드가 평가되면 함수 실행 컨텍스트가 생성됨 ㄷ. eval코드 (빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드)  - strict mode에서 자시만의 독자적인 스코프를 생성함  - 이를 위해 eval 코드가 평가되면 eval 실행 컨텍스트가 생성됨 ㄹ. 모듈코드  - 모듈별로 독립적인 모듈 스코프를 생성  -.. 2022. 12. 28.
js 빌트인 객체 js 객체는 크게 3개로 분류 가능함  - 표준 빌트인 객체 : js에서 기본적으로 제공해주는 객체들  - 호스트 객체 : dom, svg와 같이 web api나 node api에서 제공하는 객체 - 사용자 정의 객체 : 사용자가 직접 정의한 객체표준 빌트인 객체에는 대다수가 생성자 함수임예를 들면 Number, Functiuon 등등하지만 예외로 Math, Reflect, Json과 같이 생성자 함수가 아닌것들도 조금은 있음대다수는 생성자함수라 함우리는 문자열값에 대하여 아래와 같이 접근할 때가 있음'abc'.length너무 당연하게 문자열에 대하여 length라는 프로퍼티를 요구함마치 객체처럼 사용해왔음이는 사실 'abc' 문자열 리터럴을 래퍼객체 라는 임시객체로 변환하여 사용하고, 사용한 후엔 다시.. 2022. 12. 18.
js 프로토타입 프로토타입을 쓰는 이유 Person의 생성자 함수는 한가지 문제가 있다.Person 생성자 함수를 이용하여 여러 객체를 만들었을 경우 name은 각자 고유한 이름을 가지지만,setName이란 함수는 모두 같은 내용을 보유하게 될거면서각각 1명씩 setName을 가지게 된다. 이에 상속/재사용을 구현하기 위해 프로토타입이란 걸 사용한다.프로토타입 간단개념 constructor 함수는 prototype 객체를 보유하고 있음(constructor 함수가 뭔지 모른다면 아래 링크)https://yamyam-naengmyeon-donkats.tistory.com/121 js 생성자함수객체생성방법 자바스크립트에서 객체를 생성하는 가장 쉬운 방법은 리터럴을 이용한 방법이라 생각함 let a = {a:1,b:2} 이외.. 2022. 12. 8.
js 프로퍼티 어트리뷰트 js 엔진에서는 프로퍼티를 생성할 때,프로퍼티 어트리뷰트라는 상태값을 자동으로 부여해줌  - value : 프로퍼티의 값 - writable : 값의 갱신 가능 여부 - enumerable : 열거 가능 여부 - configurable : 재정의 가능 여부/프로퍼티 어트리뷰트 재정의 가능 여부 프로퍼티 어트리뷰트는 js 엔진이 관리하는 내부 상태 값인 내부슬롯이라 직접접근은 못 함.하지만 Object.getOwnPropertyDescriptors 메서드를 통해 간접 확인은 가능보다시피 자동으로 프로퍼티 어트리뷰트 값이 부여됨직접 설정해주고 싶으면 아래처럼 Object.defineProperty 메서드를 이용해 프로퍼티를 생성함Object.defineProperty(person,'name',{ val.. 2022. 12. 3.
js 함수내부에서의 this 바인딩 자바스크립트에서는 상황에 따라 this 객체에 바인딩되는 값이 다름 1.화살표함수는 자신의 상위객체에 대해 접근함2. 메소드 호출 시 메소드 내부의 this는 해당 메소드를 보유한 객체로 바인딩된다. 3. 일반함수 호출 시 함수 내부의 this는 전역객체에 바인딩된다. 4. 생성자 함수라면 생성자 함수에서 객체를 생성 후, 해당 객체에 this가 바인딩된다. 여기서 메소드는 객체내부에 일부로서 함수의 프로퍼티,값 쌍이 존재할 때그 함수를 메소드라 부름1번 예시this.a = 5;const eee = () => { console.log(this.a) // 화살표함수는 상위 객체인 전역객체를 this에 바인딩함.}eee(); // 5 2번 예시const bbb = { name:'bbb', f.. 2022. 12. 3.
js Symbol 데이터 타입 심벌이란?다른 값과 중복되지 않는 유일무이한 값이며 주로 충돌위험이 없게 유일한 프로퍼티 키를 만들기 위해 사용함심벌 값의 생성const mySymbol = Symbol();console.log(mySymbol); // Symbol()// 심벌 값은 외부로 노출되지 않아 확인할 수 없다.언뜻 보면 생성자 함수로 심볼객체를 생성하는 것처럼 보이지만new 연산자와 함께 호출하지 않고, 객체대신 원시값인 심볼이 생성된다.Symbom 함수에는 문자열을 인수로 전달할 수 있으며 이 인수는 키 값/설명으로써 사용된다.const symbol1 = Symbol("1");const symbol2 = Symbol("2");console.log(symbol1===symbol2); // false심벌 값의 생성 - for 메.. 2022. 10. 17.