this란 쉽게 말해
할머니: 나는 허리가 아프다. → ‘나’는 할머니
아버지: 나는 다리가 아프다. → ‘나’는 아버지
여기서 ‘나’와 유사하다
function foo () {
console.log(this);
}
foo(); // window
'use strict';
var name = 'ken';
function foo () {
console.log(this.name); // this === undefined
}
foo(); // error
var age = 100;
function foo () {
var age = 99;
bar();
}
function bar () {
console.log(this.age); // this === window
}
foo(); // 100
var age = 100;
var ken = {
age: 35,
foo: function foo () {
console.log(this.age); // this === ken
}
};
ken.foo(); // 35
var age = 100;
var ken = {
age: 35,
foo: function bar () {
console.log(this.age);
}
};
var wan = {
age: 31,
foo: ken.foo
};
var foo = ken.foo;
ken.foo(); // 35
wan.foo(); // 31
foo(); // 100
var age = 100;
function foo () {
console.log(this.age);
}
var ken = {
age: 35
};
var wan = {
age: 31
};
foo(); // 100
foo.call(wan); // 31 (this === wan)
foo.apply(ken); // 35 (this === ken)
var age = 100;
function foo (a,b,c,d,e) {
console.log(this.age);
console.log(arguments);
}
var ken = {
age: 35
};
foo.call(ken, 1, 2, 3, 4, 5);
// 35
// 1, 2, 3, 4, 5 (유사 배열)
foo.apply(ken, [ 1, 2, 3, 4, 5 ]);
// 35
// 1, 2, 3, 4, 5 (유사 배열)
var age = 100;
function foo () {
console.log(this.age);
}
var ken = {
age: 34
};
var bar = foo.bind(ken);
bar(); // 34
var age = 100;
function foo () {
console.log(this.age);
console.log(arguments);
}
var ken = {
age: 34
};
var bar = foo.bind(ken);
bar(1, 2, 3, 4, 5);
// 34
// 1, 2, 3, 4, 5 (유사 배열)