분류 전체보기(401)
-
Scope
Scope scope란 '범위'라는 뜻을 가지고 있습니다. 즉, 스코프란 '변수에 접근할 수 있는 범위'를 말합니다. 자바스크립트는 Lexical Scope다. Lexical Scope : 선언된 위치가 상위 스코프를 정한다. Dynamic Scope : 실행 위치가 상위 스코프를 정한다. Lexical Scope 선언된 위치가 상위 스코프를 정한다. 자바스크립트는 Lexical Scope다. 아래 코드에서 functionTwo의 선언 위치 때문에 functionTwo의 numberOne은 3이 된다. var numberThree = 3; function functionOne(){ var numberThree = 100; console.log(`functionOne numberThree : ${numbe..
2023.12.26
-
Prototype, Prototype Chain
Prototype, Prototype Chain JavaScript는 프로토타입 기반 언어라고 불립니다. JavaScript 개발을 하면 빠질 수 없는 것이 prototype입니다. prototype이 거의 JavaScript 그 자체이기 때문에 이해하는 것이 어렵고 개념도 복잡합니다. JavaScript도 객체지향 언어입니다. 하지만 자바스크립트에는 class라는 개념이 없습니다. (ES6 에서 class 문법이 추가되었습니다.) 대신 prototype이라는 것이 존재합니다. 자바스크립트가 프로토타입 기반 언어라고 불리는 이유입니다. 자바스크립트는 특정 객체의 프로퍼티나 메소드에 접근 시 객체 자신의 것 뿐 아니라 proto가 가리키는 링크를 따라서 자신의 부모 역할을 하는 프로토타입 객체의 프로퍼티나..
2023.12.23
-
Constructor Function 생성자 함수
Using function to create objects 생성자 함수로 객체 만들기 this 키워드를 통해서 property를 세팅할 수 있다. 생성자 함수로 객체를 만들 때는 꼭 'new' 키워드를 사용해야 한다. function IdolModel(name, year){ this.name = name; this.year = year; this.dance = function(){ return `${this.name}이 춤을 춥니다.`; } } // new 키워드로 호출 const yuJin = new IdolModel('안유진', 2003); console.log(yuJin); // IdolModel { name: '안유진', year: 2003 } console.log(yuJin.dance()); /..
2023.12.23
-
Immutable Objects - extensible, seal, freeze
Immutable Objects 불변 객체 - JavaScript에서 primitive data type(원시 타입)은 변경 불가능한 값(immutable value)이며, 객체는 변경 가능한 값(mutable value)입니다. immutable을 쓰는 이유는 궁긍적으로 '성능' 때문입니다. mutable value는 값에 대한 메모리 주소를 참조하기 때문에 값을 변경했을 경우 해당 값을 사용하고 있는 모든 곳에서 side effect(부수 효과)가 발생하여 예기치 못한 버그를 유발할 수 있습니다. immutable로 객체를 선언하고 사용하게 되면 객체의 메모리 주소가 불변하기 때문에 구조를 단순하게 유지할 수 있고 그로 인해 구조적인 공유를 할 수 있어 애플리케이션을 추론하기 쉽게 됩니다. 내부적으로..
2023.12.23
-
Property Attribute
property attribute JavaScript의 객체는 key, value만 존재하는 것이 아니라 생각보다 굉장히 섬세한 객체이다. 객체나 클래스에서 선언하는 프로퍼티의 애트리뷰트를 확인해볼 수 있다. 객체의 프로퍼티에는 아래 2가지 종류가 있다. 데이터 프로퍼티 - 키와 값으로 형성된 실질적 값을 갖고 있는 프로퍼티 액세서 프로퍼티 - 자체적으로 값을 갖고 있지 않지만 다른 값을 가져오거나 설정할 때 호출되는 함수로 구성된 프로퍼티 ex) getter, setter 1. 프로퍼티 애트리뷰트 출력 Object.getOwnPropertyDescriptor(객체, 프로퍼티key) Object.getOwnPropertyDescriptors(객체) Object - 대문자로 시작하므로 생성자 함수 이거나 ..
2023.12.22
-
getter & setter
getter와 setter는 객체 지향 프로그래밍에서 사용되는 개념이며, 일종의 메서드라고 보면 된다. 즉, 단어 그대로 getter는 객체의 속성(property) 값을 반환하는 메서드이며, setter는 객체의 속성 값을 설정, 변경하는 메서드라고 보면 된다. 예를 들어 user 라는 객체가 있을 경우, 보통이라면 user.name으로 프로퍼티로 바로 접근해서 이름값을 가져오거나 재설정 할 텐데 const user = { name: 'inpa', age: 50 } console.log(user.name); // inpa user.name = 'tistory'; 위와 같이 바로 접근하지 말고 getName(), setName() 메서드를 통해 경유해서 설정하도록 하는 기법이 바로 getter와 sett..
2023.12.22