var name = 'Global variable'; //전역변수 'name'
console.log(this.name); //"Global Variable"
//(글로벌에서) this === window
function global(){ //함수 'global'
console.log(this === window);
}
global(); //true
//(함수 호출 시) this === window (설령 함수가 여러번 중첩되있다하더라도 같음)
Method는 객체에 담긴 함수(Function)
var obj = { //객체 'obj'
foo : function(){ //메소드 'foo'
console.log(this === obj)}
};
obj.foo(); //true
//(메소드 호출 시) this === window (object가 여러번 중첩될시 바로 직계부모만)
new
연산자로 생성된 function 영역의 this) : 새로 생성된 객체function Test() { //생성자 함수 'Test'
this.name = 10; //프로퍼티(속성) 정의
}
let Test1 = new Test(); //인스턴스 생성
Test1.name; //10
//this === Test1
.call
or .apply
호출 : caal, apply의 첫번째 인자로 명시 된 객체function identify() {
this.name.toUpperCase();
}
let me = {name: "kyle"};
let you = {name :"reader"};
identify.call(me); //'KYLE' //this === me
identify.apply(you) //'READER' //this === you
*call()와 apply()의 차이 -> parameter 값을 배열로 받느냐 아니냐 차이
function add (a,b){
return a+b
}
add.apply(null, [2,8]) //10
add.call(null, 2, 8) //10