>웹 프론트엔드 >JS 튜토리얼 >Javascript에서 함수 적용 메소드를 사용하는 방법에 대한 자세한 설명

Javascript에서 함수 적용 메소드를 사용하는 방법에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-20 14:10:092353검색

Function.prototype.apply()

적용 방법은 호출 방법과 유사하며, 이 지점(함수가 실행되는 범위)을 변경한 다음 지정된 범위에서 함수를 호출합니다. 해당 기능도 즉시 실행됩니다. 유일한 차이점은 함수가 실행될 때 배열을 매개변수로 받는다는 것입니다.

apply 메서드의 첫 번째 매개 변수도 this가 가리키는 개체입니다. null 또는 undef로 설정되거나 this로 설정되면 전역 개체를 지정하는 것과 같습니다. 두 번째 매개변수는 배열이며, 배열의 모든 멤버는 호출 시 차례로 매개변수로 사용되며 원래 함수에 전달됩니다. call 메소드에서는 원래 함수의 매개변수를 하나씩 추가해야 하지만, Apply 메소드에서는 배열 형태로 추가해야 합니다.

전화의 뉘앙스를 보고 신청하세요.


function keith(a, b) {
 console.log(a + b);
 }
 keith.call(null, 2, 3); //5
 keith.apply(null, [2, 3]); //5

위 코드에서 첫 번째 매개변수는 null이고 전역 범위를 가리키며 두 번째 매개변수는 약간 다른 형식으로 전달됩니다.

적용 방법에는 다음과 같은 용도가 있습니다.

3.1: 배열에서 최대값 찾기


var a = [2, 4, 5, 7, 8, 10];
console.log(Math.max.apply(null, a)); //10
console.log(Math.max.call(null,2, 4, 5, 7, 8, 10)); //10 

Javascript는 배열에서 최대값을 찾는 방법을 제공하지 않습니다. 이를 얻으려면 Function.prototype에서 상속된 Apply 및 Math.max 메서드를 사용하세요. . 배열의 최대값을 반환할 수 있습니다.

3.2: 배열의 빈 요소를 정의되지 않음으로 변경합니다.

적용 메서드를 사용하고 배열 생성자를 사용하여 배열의 빈 요소를 정의되지 않음으로 변경합니다.

console.log(Array.apply(null, [1, , 3])); // [1, undefined, 3]

빈 요소와 정의되지 않은 요소의 차이점은 배열의 forEach 메서드가 빈 요소를 건너뛰지만 정의되지 않은 요소와 null은 건너뛰지 않는다는 것입니다. 따라서 내부 요소를 순회하면 다른 결과를 얻게 됩니다.


var a = [1, , 3];
 a.forEach(function(index) {
 console.log(index); //1,3 ,跳过了空元素。
 })
 Array.apply(null,a).forEach(function(index){
 console.log(index); ////1,undefined,3 ,将空元素设置为undefined
 })

3.3: 배열 유사 객체 변환

또한 배열 객체의 슬라이스 메서드를 사용하면 배열 유사 객체(예: 인수 객체)를 실제 배열로 변환할 수 있습니다. 물론, 슬라이스 방법의 중요한 적용은 배열과 유사한 객체를 실제 배열로 변환하는 것입니다. 호출과 적용 모두 이 애플리케이션을 구현할 수 있습니다.


console.log(Array.prototype.slice.apply({0:1,length:1})); //[1]
console.log(Array.prototype.slice.call({0:1,length:1})); //[1]
console.log(Array.prototype.slice.apply({0:1,length:2})); //[1,undefined]
console.log(Array.prototype.slice.call({0:1,length:2})); //[1,undefined]
function keith(a,b,c){
 return arguments;
 }
console.log(Array.prototype.slice.call(keith(2,3,4))); //[2,3,4]

위 코드에서 호출 및 적용 메소드의 매개변수는 모두 객체이지만 반환 결과는 모두 배열이므로 객체를 배열로 변환하는 용도로 사용됩니다. 위 코드에서 볼 수 있듯이 이 방법이 작동하려면 처리되는 객체에 길이 속성과 해당 숫자 키가 있어야 한다는 전제가 있습니다.

위 내용은 Javascript에서 함수 적용 메소드를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.