var add = function(a,b){
return a+b;
}
// 호출패턴 4가지
//0. 메소드 호출 패턴 (객체내메소드 호출 패턴 (객체내 함수를 메소드라 함)
// *this 는 객체 자체가 된다.
var myObject = {
value : 0,
increment: function(inc){
this.value += (typeof inc === 'number' ? inc : 1);
}
};
myObject.increment(); // 인자가 number 타입이 아니니 value 에 1이 할당됨
console.log(myObject.value);
myObject.increment(2); // 인자가 number 이니까 기존 value 1+2 가 됨
console.log(myObject.value);
//1. 함수 호출 패턴
var sum = add(3,4);
// ㄴ이런거
myObject.double = function(){
// var that = this;
var helper = function(){
this.value = add(this.value, this.value);
};
helper();
};
myObject.double();
console.log(myObject.value);
//2. 생성자 호출패턴
//지금 함수로만 보면 this 가 전역객체를 가르키지만 생성자로 사용할땐 유용하다.
var Quo = function(string){
this.status = string;
}
// Quo 의 모든 인스턴스에 get_status 라는 public 메소드를 줌
Quo.prototype.get_status = function(){
return this.status;
}
// ㄴQuo 에 프로퍼티를 추가하는게 아니라 Quo 의 prototype 에 속성을 추가하는 것임
//Quo 인스턴스 생성
var myQuo = new Quo("confused");
console.log(myQuo.get_status());
// 일반적으로 생성자는 대문자로 시작해 구분하는 센스를 발휘해야된다.
// 크럭포드는 생성자 함수를 사용하는것은 권장사항이 아니라고 했다.
//3. apply 호출패턴
// apply 메소드는 함수를 호출할때 사용할 인수들의 배열을 받아들인다.
// this 의 값을 선택할 수 있도록 해준다!!!(첫번째인자)
// 배열을 이용하는 예제
var array = [3,4];
var sum = add.apply(null,array);
var statusObject = {
status: "A-OK"
};
var status = Quo.prototype.get_status.apply(statusObject);
console.log(status);
//ㄴ 즉,Quo.prototype.get_status 메소드의 this 를 statusObject 로 바꿔줘서 그 status 를 리턴하는거다
다른 글