티스토리 뷰
var foo = function () {
console.dir(this);
};
// 1. 함수 호출
foo(); // window
// window.foo();
// 2. 메소드 호출
var obj = { foo: foo };
obj.foo(); // obj
// 3. 생성자 함수 호출
var instance = new foo(); // instance
// 4. apply/call/bind 호출
var bar = { name: 'bar' };
foo.call(bar); // bar
foo.apply(bar); // bar
foo.bind(bar)(); // bar
1. 함수 호출은 this가 전역 (windwo or global)로 정의된다.
2. 함수 내부의 함수의 this역시 마찬가지. 이는 내부함수의 this가 전역 객체에 바인딩 됨을 의미한다.
3. 메소드로 호출시 해당 메소드를 호출한 객체에 바인딩 된다.
4. 생성자 함수로 생성한 객체는 자기 자신이 생성자 함수의 this가 된다. 여기서 new keyword를 붙이지 않으면, this 는 전역객체가 된다.
function Person(name) {
// new없이 호출하는 경우, 전역객체에 name 프로퍼티를 추가
this.name = name;
};
// 일반 함수로서 호출되었기 때문에 객체를 암묵적으로 생성하여 반환하지 않는다.
// 일반 함수의 this는 전역객체를 가리킨다.
var me = Person('Lee');
console.log(me); // undefined
console.log(window.name); // Lee
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- three.js leva
- vue
- react 3d animation
- react fiber 3d
- 카카오 카드 짝 맞추기 자바스크립트
- rollup typescript
- react three fiber
- react 3d 에니메이션
- ts glsl
- react leva
- rollup ts react npm
- react three fiber leva
- react 3d text
- rollup react.js npm
- react 3d
- leva
- typescript gsls
- vue3
- 카드 짝 맞추기 javascript
- webpack glsl
- next.js import glsl
- attempted import error: bvh_struct_definitions' is not exported from './gpu/bvhshaderglsl.js' (imported as 'bvhshaderglsl').
- 카카오 2021 카드 짝 맞추기
- Vue.js
- next.js glsl
- 카카오 카드 짝 맞추기 javascript
- 카드 짝 맞추기 자바스크립트
- rollup typescript react
- react glsl
- eslint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함