Link Search Menu Expand Document

Functions Methods

Table of contents

  1. Method Reuse
    1. All Functions are Methods
  2. Methods
    1. call() Method
    2. apply() Method
  3. Useage of Function Methods
    1. Simulate a Max Method on Arrays

Method Reuse

All Functions are Methods

모든 함수는 메소드

▸ 함수가 자바스크립트 객체의 메소드가 아니라면, 전역 객체(window)의 함수가 됨

아래 예제는 firstName, lastName, fullName이라는 3 개의 속성을 가진 객체를 만듦

예제

var person = {
  firstName:"John",
  lastName: "Doe",
  fullName: function () {
    return this.firstName + " " + this.lastName;
  }
}
person.fullName();   // Will return "John Doe"

Methods

call() Method

소유자 객체를 인수로 사용하여 메소드를 호출하는 데 사용

▸ 자바스크립트의 미리 정의된 메소드

▸ call()메소드는 인수를 받음

어떤 객체에 속하는 메소드를 다른 객체가 사용하기

var person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person1 = {
  firstName:"John",
  lastName: "Doe"
}
var person2 = {
  firstName:"Mary",
  lastName: "Doe"
}

person.fullName.call(person1);  // "John Doe"
person.fullName.call(person2);  // "Mary Doe"

인수를 받는 call()메소드

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"John",
  lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway"); // John Doe,Oslo,Norway

apply() Method

소유자 객체 배열을 인수로 사용하여 메소드를 호출하는 데 사용

▸ 자바스크립트의 미리 정의된 메소드

▸ apply()메소드는 인수를 받음

★ call() 메소드와 비슷하지만 인수를 배열로 받는다는 점에서 다름

어떤 객체에 속하는 메소드를 다른 객체가 사용하기

var person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person1 = {
  firstName: "Mary",
  lastName: "Doe"
}
person.fullName.apply(person1);  // Will return "Mary Doe"

인수를 받는 apply() 메소드

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"John",
  lastName: "Doe"
}
person.fullName.apply(person1, ["Oslo", "Norway"]); // John Doe,Oslo,Norway

The Difference Between call() and apply()

두번째 매개변수를 어떤 형식으로 받느냐에 따라 달라짐

  • call() method : takes arguments separately

  • apply() method : takes arguments as an array

    → very handy if you want to use an array instead of an argument list

JavaScript Strict Mode

JavaScript의 엄격한 모드에서 apply()메소드 의 첫 번째 인수가 오브젝트가 아닌 경우, 호출 된 함수의 소유자 (오브젝트)가됨

“엄격하지 않은”모드에서는 전역 객체가됨


Useage of Function Methods

Simulate a Max Method on Arrays

단일 인수로 최대값을 찾을때에는 Math.max()를 사용하면 되지만, 배열일때는 사용할 수 없음

따라서 apply() 메소드를 활용해 배열을 인수로 활용해 최대값을 찾을 수 있음

예제

Math.max(1,2,3);  // Will return 3

Math.max.apply(null, [1,2,3]); // Will also return 3

최대값을 계산할 값들이 두번째 매개변수에 배열로 들어가있어서 첫 번째 인수 (null)는 중요하지 않음

→ 따라서 null, “ “, grace, 0 다 가능함 (공백은 안됨)


이 웹사이트는 jekyll로 제작되었습니다. Patrick Marsceill, Distributed by an MIT license.