Javascript40 생성자 함수에 의한 객체 생성 생성자 함수는 이름 그대로 객체를 생성하는 함수이다. 하지만 클래스 기반 객체지향 언어의 생성자와는 다르게 일반 함수와 동일한 방법으로 생성자 함수를 정의하고 new 연산자와 함께 호출하면 해당 함수는 생성자 함수로 동작한다. function Circle(radius) { this.radius = radius; this.getDiameter = function() { return 2 * this.radius; }; } const circle = new Circle(1); console.log(circle); // Circle {radius: 1, getDiameter: f} /* 만약 this가 아닌 다른 객체를 명시적으로 반환하면 this가 반환되지 못하고 return 문에 명시한 객체가 반환된다. *.. 2020. 11. 16. 객체 변경 방지 객체는 변경 가능한 값이므로 재할당 없이 직접 변경할 수 있다. 즉, 프로퍼티를 추가하거나 삭제할 수 있고, 프로퍼티 값을 갱신할 수 있으며, Object.defineProperty, Object.defineProperties 메서드를 사용하여 프로퍼티 어트리뷰트를 재정의할 수 있다. 구분 메소드 프로퍼티추가 프로퍼티삭제 프로퍼티 값읽기 프로퍼티 값쓰기 어트리뷰트 재정의 객체 확장 금지 Object.preventExtensions X O O O O 객체 밀봉 Object.seal X X O O X 객체 동결 Object.freeze X X O X X 객체 확장 금지 Object.preventExtensions 메소드는 객체의 확장을 금지한다. 이 의미는 프로퍼티 추가 금지를 의미한다. 삭제는 가능하다. .. 2020. 11. 16. 변수 호이스팅 var 키워드로 선언한 변수와 달리 let 키워드로 선언한 변수는 변수 호이스팅이 발생하지 않는 것처럼 동작한다. console.log(test); // ReferenceError: test is not defined let test; 이처럼 let 키워드로 선언한 변수를 선언문 이전에 참조하면 참조에러가 발생한다. var 키워드로 선언한 변수는 런타임 이전에 자바스크립트 엔진에의해 암묵적으로 선언 단계와 초기화 단계가 한번에 진행된다. 즉, 선언 단계에서 스코프에 변수 식별자를 등록하여 자바스크립트 엔진에 변수 존재를 알린다. 그리고 즉시 초기화 단계에서 undefined로 변수를 초기화한다. 이와 반대로 let 키워드로 선언한 변수는 선언 단계와 초기화 단계가 분리되어 진행한다. 만약 초기화 단계가 .. 2020. 11. 16. 스코프 스코프 스코프(유효 범위)는 모든 프로그래밍 언어의 기본적이며 가장 중요한 개념이라고 할 수 있다. 특히 자바스크립트의 경우 다른 언어들의 스코프와 구별되는 특징이 있으므로 더 주의해야 한다. 그 특징에 대해 알아보겠다. function add(x, y) { // 매개변수의 스코프는 함수 몸체 내부이다. console.log(x, y); // 7 5 return x + y; } add(7, 5); // 매개변수는 함수 몸체 내부에서만 참조가능 console.log(x, y); // ReferenceError: x is not defiend 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있다. 매개변수의 스코프가 함수 몸체 내부로 한정되기 때문이다. var var1 = 1; // 코드 가장 바깥에서 선.. 2020. 11. 16. 이전 1 ··· 6 7 8 9 10 다음