안녕하세요송기석입니다.

 

새해 복 많이 받으세요.


작년에 호출 패턴 중 메소드 호출 패턴과 함수 호출 패턴을 했습니다. 오늘은 나머지 생성자 호출 패턴과 apply 호출 패턴을 하겠습니다.

메소드 호출 패턴


  자바스크립트는 프로토타입에 의해 상속이 이루어집니다. 객체가 자신의 속성들을 다른 객체에 바로 상속할 수 있습니다. 자바스크립트는 클래스가 없습니다. 이런 점은 다른 클래스를 사용하는 언어와 큰 차이가 있습니다. 하지만 클래스에 익숙한 사용자를 위한 객체 생성 문법을 제공하다 보니 양쪽 모두 애매한 상태를 만들어 버렸습니다.

 

함수를 new와 함께 호출하면, 호출한 함수의 프로토타입 속성의 값에 연결된 숨겨진 링크를 갖는 객체가 생성되고 this에 바인딩 됩니다.

// 생성자 함수 생성 var test = function (string) { this.status = string; }; // test의 모든 인스턴스에 get_status을 public 메소드를 줌 test.prototype.get_status = function () { return this.status; }; // test 인스턴스 생성 var mytest = new test('confused'); console.log(mytest.get_status()); // confused

생성자 함수를 사용하는 스타일은 권장 사항이 아닙니다.

apply 호출 패턴


자바스크립트는 함수형 객체지향 언어이기 때문에 함수는 메소드를 가질 수 있습니다.

 

apply 메소드는 함수를 호출할 때 사용할 인수들의 배열을 받아들입니다. 이 메소드는 this 값을 선택할 수 있도록 해줍니다. apply 메소드는 this에 묶이는 값과 매개변수들의 배열 매개변수 두 개가 있습니다.

var add = function (a, b) { return a + b; }; var test = function (string) { this.status = string; }; // test의 모든 인스턴스에 get_status을 public 메소드를 줌 test.prototype.get_status = function () { return this.status; }; // test 인스턴스 생성 var mytest = new test('confused'); console.log(mytest.get_status()); // confused */ var array = [3, 4]; var sum = add.apply(null, array); console.log(sum); // 7 var status_object = { status: 'A-OK' }; var status = test.prototype.get_status.apply(status_object); console.log(status); // “A-OK”


날씨가 매우 춥습니다. 감기 조심하시고 다음에 뵙겠습니다.