Replies: 3 comments
-
|
Beta Was this translation helpful? Give feedback.
-
const Person = {
name: 'hunteac',
greet: function() {
console.log(`Hello, ${this.name}!`);
}
};
const otherPerson = {
name: 'Alice'
};
Person.greet(); // 출력: "Hello, hunteac!"
otherPerson.greet = Person.greet;
otherPerson.greet(); // 출력: "Hello, Alice!"
|
Beta Was this translation helpful? Give feedback.
-
var value = 1;
const obj = {
value = 100;
foo() {
console.log(this); // {value: 100, foo: f}
// 콜백함수의 내부의 this에는 전역 객체가 바인딩된다.
setTimeout(function() {
console.log(this); // window
console.log(this.value); // 1
}, 1000)
}
};
// 메서드로 호출
obj.foo();
function getThisBinding(){
return this;
}
const thisArg = { a : 1 };
// 1. 전역 객체를 가리킵니다.
console.log(getThisBinding()); // window
// 2. `apply()` 메서드는 첫 번째 인자로 `this`에 바인딩할 객체를 받는데 인자가 없으므로 전역 객체에 `this`가 바인딩됩니다.
console.log(getThisBinding.apply()); // window
// 3. `call()` 메서드는 첫 번째 인자로 `this`에 바인딩할 객체를 받는데 인자가 없으므로 2. 와 마찬가지로 전역 객체에 `this`가 바인딩됩니다.
console.log(getThisBinding.call()); // window
// 4. `bind()` 메서드를 호출만하고 반환된 새 함수를 호출하지는 않습니다. 따라서 출력 값은 바인딩된 함수 자체입니다. (함수의 복사본을 가리키는 참조)
console.log(getThisBinding.bind(thisArg));
// 5. `bind()`를 사용하여 `thisArg` 객체({a: 1})에 `this`를 명시적으로 바인딩한 새 함수를 생성하고 바로 그 함수를 호출하므로 `this`는 `{a: 1}`을 가리킨다.
console.log(getThisBinding.bind(thisArg)()); // { a : 1 }
실행 컨텍스트 스택: 실행 컨텍스트가 관리되는 자료구조를 의미합니다. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
this가 무엇인가? 자바스크립트에서 어떤식으로 바인딩 되는지 설명하시오.
this 바인딩의 동적 결정을 예시 코드를 들어 설명하시오.
다음 코드에서 'this'에는 무엇이 바인딩 되는가?
자바스크립트에서 소스코드의 평가와 실행이 어떻게 다른지 설명하고, 자바스크립트 엔진의 작동 순서를 설명하세요.
실행 컨테스트 스택과 렉시컬 환경을 구분하고, 각각의 정의를 설명하시오.
Beta Was this translation helpful? Give feedback.
All reactions