fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ
543
12 câu hỏi đã được viết
// 정리 시간
var book = {
value: 123,
get: function() {
var value = 456;
console.log(this === window);
console.log(this.value);
}
};
var fn = book.get;
fn();
// true
// false
// undefined
정리 시간1을 공부하면서 fn() 함수 호출 시 새롭게 할당된 function 오브젝트인 fn() 함수 안으로 들어가는 것인지
아니면 book.get 함수 안으로 들어가는 것인지 궁금해서 첫 줄에 debugger를 작성하여 한 줄씩 이동해서 확인해봤더니
book.get 함수 안으로 이동하는 것을 확인했습니다.
근데 저는 왜 새롭게 할당된 fn 함수 안으로 엔진이 이동을 안하는 것인지 궁금합니다. 그래서 이것이 설정이 아니라 참조인가 해서
확인하려고 다음과 같은 코드를 실행했습니다.
var book = {
value: 123,
get: function() {
var value = 456;
console.log(this === window);
console.log(this === book);
console.log(this.value);
}
};
var fn = book.get;
fn(); // true, false, undefined
book.get(); // false, true, 123
var book = {
value: 111,
get: function() {
console.log(this.value);
}
}
fn(); // true, false, undefined
book.get(); // 111
마지막에서 두 번째 줄인 fn() 함수는 그대로 처음 할당된 book 오브젝트를 경로로 get 함수에 들어가고
마지막 줄인 book.get() 함수는 마지막에 할당된 book 오브젝트를 경로로 들어가는 것을 확인해서 참조는 아닌 것을 확인했습니다.
왜 fn 함수와 book.get은 서로 다른 독립적인 function 오브젝트이면서 fn() 함수를 호출했을 때 book 오브젝트 안의 get 함수 안으로 엔진이 이동하는 것인지 궁금합니다....ㅠㅠㅠㅠㅠ
그리고 debugger 창을 열어서 확인했는데 fn function 오브젝트의 name 프로퍼티 값으로 "get"이 할당되어있던데 이거와 관련이 있는 것인지 궁금합니다!!...ㅠㅠㅠㅠㅠㅠㅠ
Câu trả lời 1
0
왜 fn 함수와 book.get은 서로 다른 독립적인 function 오브젝트이면서...
==> 독립적이지 않습니다.
var fn = book.get;에서 get의 Function 오브젝트가 메모리에 설정됩니다.
이때 메모리 주소(address)가 100이라고 하겠습니다.
var fn = book.get;을 실행하면, 메모리 주소 100을 fn 변수에 설정합니다. 따라서 fn()을 호출하면 메모리 주소 100에 설정된 Function 오브젝트를 호출하게 되며, 이것은 book.get입니다.
즉, fn과 book.get이 같은 메모리 주소를 참조합니다.
0
와.. 그러면 제가 한 번 더 book 오브젝트를 선언하여 {get: function 오브젝트} 프로퍼티를 대체해도 fn함수를 호출 시 함수 내 코드가 변하지 않았던 이유가 fn은 그대로 메모리 주소 100을 참조하니깐 그랬던 것이군요! 와.. 대박 감사합니다....!
getBook 실습 예제중 질문드립니다!
0
419
1
__proto__ 에 대해 질문드립니다
0
316
1
호이스팅 코딩시간 풀이
0
360
1
[코딩 시간] JS {name: value} 이해
0
341
1
[[Scope]] 와 [[Environment]]는 같은 개념인가요
0
345
0
slice
0
239
0
스코프가 뭔가요?
0
308
0
어려워요
0
256
0
강사님 변수이름에 get을 붙이는 이유를 알고싶습니다.
0
342
1
[정리 시간] 정확하게 이해했는지 확인 부탁드립니다.
0
301
0
스코프 질문
0
253
1
this binding 논리 질문입니다.
0
282
1
파라미터 값을 매핑할 때
0
251
0
ES6부터는 this 바인딩을 환경 레코드에서 참조한다고 들었습니다.
0
211
0
정리시간 입니다.
0
228
0
정리시간입니다.
6
272
0
정리 시간 입니다.
0
203
0
정리시간입니다.
6
229
0
코딩시간 입니다.
1
225
0
선생님 스코프 질문이 있습니다.
1
244
0
[정리시간] 해보았습니다!
0
180
0
선생님 질문있습니다!!
0
162
0
질문드려도 될까요 선생님..
0
219
0
엔진이 식별자 해결을 위해서 스코프를 사용한다고 하셨는데
0
186
0

