JavaScript 함수 Apply

재사용

메서드를 통해 apply() 메서드를 통해 다른 객체에 대한 메서드를 작성할 수 있습니다.

JavaScript apply() 메서드

apply() 메서드는 call() 메서드는 매우 유사합니다:

이 예제에서는personfullName 메서드는적용부터 person1

예제

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName: "Bill",
    lastName: "Gates",
}
person.fullName.apply(person1);  // "Bill Gates"를 반환합니다

직접 시도해 보세요

call()와 apply()의 차이

차이점은:

call() 메서드는 각각의 매개변수를 받습니다.

apply() 메서드는 배열 형태의 매개변수를 받습니다.

배열 대신 매개변수 목록을 사용하려면 apply() 매서드는 매우 편리합니다.

매개변수를 가진 apply() 메서드

apply() 메서드는 배열의 매개변수를 받습니다:

예제

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

직접 시도해 보세요

call() 메서드 비교:

예제

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

직접 시도해 보세요

배열에서 max 메서드를 모의합니다

사용할 수 있습니다 Math.max() 메서드는(숫자 목록의)최대 숫자를 찾습니다:

예제

Math.max(1,2,3);  // 3을 반환합니다

직접 시도해 보세요

JavaScript 배열이 max() 메서드를 가지고 있지 않기 때문에, 다음과 같이 적용할 수 있습니다: Math.max() 메서드

예제

Math.max.apply(null, [1,2,3]); // 3도 반환됩니다

직접 시도해 보세요

첫 번째 매개변수(null)은 중요하지 않습니다. 이 예제에서는 사용하지 않습니다.

이 예제들은 같은 결과를 주게 됩니다:

예제

Math.max.apply(Math, [1,2,3]); // 3도 반환됩니다

직접 시도해 보세요

예제

Math.max.apply(" ", [1,2,3]); // 3도 반환됩니다

직접 시도해 보세요

예제

Math.max.apply(0, [1,2,3]); // 3도 반환됩니다

직접 시도해 보세요

JavaScript strict 모드

JavaScript strict 모드에서, 만약 apply() 메서드의 첫 번째 매개변수가 객체가 아니면, 그것은 호출된 함수의 소유자(객체)가 됩니다. '비정확' 모드에서는 전체 객체가 됩니다.