프로퍼티 플래그객체의 각 프로퍼티는 기본적으로 데이터와 함께 몇 가지 속성 플래그를 가지고 있습니다. 이들 플래그는 프로퍼티의 행동 방식을 세밀하게 제어할 수 있게 해줍니다.writable : 프로퍼티 값을 수정할 수 있는지 여부를 결정합니다.enumerable : 프로퍼티가 열거 가능한지 여부를 결정합니다. configurable : 프로퍼티의 정의를 수정하거나 삭제할 수 있는지 여부를 결정합니다.객체 리터럴로 생성된 프로퍼티들은 기본적으로 이 모든 플래그가 true로 설정되어 있습니다. 하지만 Object.defineProperty()나 Object.defineProperties()를 사용하면 이러한 플래그를 직접 제어할 수 있습니다.프로퍼티 플래그 조회Object.getOwnPropertyDescr..
콜백 함수로 전달 시 this 정보 손실객체의 메서드를 단순히 다른 함수로 전달하면, 해당 함수가 호출될 때 원래 객체의 컨텍스트가 손실되어 예상치 못한 결과가 발생합니다.const user = { nickName: "Alice", sayHello() { console.log(`Hello, ${this.nickName}!`); }};// sayHello 메서드를 콜백 함수로 전달setTimeout(user.sayHello, 1000); // 출력: "Hello, undefined!" (`this`는 전역 객체)위 코드에서는 user.sayHello를 직접 setTimeout에 전달했기 때문에, 함수 호출 시 this가 전역 객체로 설정됩니다.래퍼 함수를 사용하여 this 고정래퍼 함수를 사용하..
함수의 컨텍스트와 call/apply의 이해자바스크립트에서 함수 호출 시 컨텍스트(context), 즉 this는 그 함수의 동작을 결정하는 핵심 요소입니다. call과 apply 메서드는 함수를 호출하면서 명시적으로 this를 설정할 수 있게 해줍니다.func.call(context, arg1, arg2, ...)함수 func를 호출할 때 this를 context로 지정하고, 나머지 인수들을 각각 전달합니다.func.apply(thisArg, argsArray)함수 func를 호출할 때 this를 context로 지정하고, 인수들을 배열로 한꺼번에 전달합니다.function introduce(greeting) { console.log(`${greeting}, 저는 ${this.name}입니다.`);}..
호출 스케줄링setTimeout(func, delay, ...args)지정된 delay(밀리초) 후에 func 함수를 한 번 실행합니다.반환되는 값은 타이머 식별자(timer ID)로, 이를 이용해 clearTimeout으로 예약된 호출을 취소할 수 있습니다. setInterval(func, delay, ...args)지정된 delay 간격마다 func 함수를 반복적으로 실행합니다.이 역시 타이머 식별자를 반환하며, clearInterval로 반복 실행을 중단할 수 있습니다. setTimeout 간단한 지연 실행 function showMessage() { console.log("2초 후에 이 메시지가 표시됩니다.");}// 2000ms(2초) 후에 showMessage 함수를 한 번 실행합니다.con..
new Function 문법 개요new Function 문법은 문자열 형태로 함수를 동적으로 생성할 수 있게 해주는 자바스크립트의 기능입니다. 이는 런타임 시점에 코드를 컴파일하여 함수를 생성합니다.const add = new Function('a', 'b', 'return a + b;');console.log(add(2, 3)); // 출력: 5인수를 하나의 문자열로 나열해도 동일하게 동작합니다.const multiply = new Function('a, b', 'return a * b;');console.log(multiply(4, 5)); // 출력: 20new Function과 일반 함수의 차이점렉시컬 환경의 차이일반적인 함수 선언이나 함수 표현식은 정의된 위치의 렉시컬 스코프를 기억하여 주변의 ..
함수도 객체다함수는 호출 가능한 객체(callable object)로서, 일반 객체처럼 프로퍼티를 가질 수 있습니다. 이를 통해 함수 자체에 데이터를 저장하거나 상태를 관리할 수 있습니다.function sayHello() { console.log("안녕하세요!");}// 함수의 내장 프로퍼티 확인console.log(sayHello.name); // 출력: "sayHello"console.log(sayHello.length); // 출력: 0 (매개변수의 수)// 사용자 정의 프로퍼티 추가sayHello.counter = 0;// 함수 호출과 프로퍼티 활용sayHello(); // 출력: 안녕하세요!sayHello.counter++;console.log(`sayHe..