찾다
웹 프론트엔드프런트엔드 Q&Ajavascript에서 호출과 적용의 차이점은 무엇입니까

JavaScript에서는 call() 메서드와 apply() 메서드가 동일한 기능을 가지고 있지만 call() 메서드를 사용할 때 함수에 전달되는 매개변수는 하나씩 나열되어야 합니다. 하나. apply() 를 사용할 때 함수에 전달되는 것은 매개변수 배열입니다.

javascript에서 호출과 적용의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: Windows 10 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

javascript에서 call과 apply의 차이점은 무엇인가요?

call() 메소드는 지정된 이 값과 별도로 제공되는 매개변수(매개변수 목록)를 사용하여 함수를 호출합니다.

참고: 이 메소드의 기능은 apply() 메소드와 유사합니다. 유일한 차이점은 call() 메소드는 여러 매개변수 목록을 허용하는 반면, apply() 메소드는 여러 매개변수를 포함하는 배열을 허용한다는 것입니다.

 Syntax

fun.call(thisObj[, arg1[, arg2[, ...]]])

  정의: 현재 개체를 다른 개체로 대체하려면 개체의 메서드를 호출합니다.

  설명:

   호출 메서드는 다른 개체 대신 메서드를 호출하는 데 사용할 수 있습니다. call 메소드는 함수의 객체 컨텍스트를 초기 컨텍스트에서 thisObj가 지정한 새 객체로 변경합니다.

   thisObj 매개변수가 제공되지 않으면 전역 개체가 thisObj로 사용됩니다.

 Parameter

  thisObj

  fun 함수가 실행될 때 지정하는 값입니다. 함수가 실행될 때 지정된 this 값이 반드시 실제 this 값일 필요는 없습니다. 함수가 엄격하지 않은 모드에 있는 경우 null 및 undef로 지정된 this 값은 자동으로 전역 개체를 가리킵니다(브라우저는 창 개체), 값이 기본 값(숫자, 문자열, 부울 값)인 this는 기본 값의 자동 래핑 개체를 가리킵니다.

  arg1, arg2, ...

   지정된 매개변수 목록입니다.

반환 값

반환 결과에는 지정된 this 값과 매개변수가 포함됩니다.

apply()

apply() 메서드는 지정된 this 값과 배열(또는 배열 유사 객체)로 제공되는 인수를 사용하여 함수를 호출합니다.

Syntax

fun.apply(thisObj, [argsArray])

 정의: 현재 개체를 다른 개체로 바꾸는 개체의 메서드를 적용합니다.

 참고:

  argsArray가 유효한 배열이 아니거나 인수 개체가 아닌 경우 TypeError가 발생합니다.

   argArray나 thisObj가 모두 제공되지 않으면 전역 개체가 thisObj로 사용되며 매개 변수를 전달할 수 없습니다.

Parameter

 thisObj

  fun 함수가 실행될 때 지정하는 값입니다. 함수가 실행될 때 지정된 this 값이 반드시 실제 this 값일 필요는 없습니다. 함수가 엄격하지 않은 모드에 있는 경우 지정된 값이 null이거나 정의되지 않으면 자동으로 전역 객체를 가리킵니다. (브라우저에서는 창 개체입니다.) 값이 기본 값(숫자, 문자열, 부울 값)인 이 개체는 기본 값의 자동 래핑 개체를 가리킵니다.

  argsArray

   배열 또는 배열 유사 객체로, 배열 요소는 별도의 매개변수로 fun 함수에 전달됩니다. 이 매개변수의 값이 null이거나 정의되지 않은 경우 매개변수를 전달할 필요가 없음을 의미합니다. ECMAScript 5

  부터 배열과 유사한 객체를 사용할 수 있습니다.

요약

둘 다 동일한 기능을 갖고 있으며 둘 다 obj(즉, this)를 thisObj에 바인딩합니다. 이때 thisObj는 obj의 속성과 메서드를 갖습니다. 즉, thisObj는 obj의 속성과 메서드를 "상속"합니다. 유일한 차이점은 apply는 배열 매개변수를 허용하는 반면 call은 연속 매개변수를 허용한다는 것입니다.

call() 메소드와 apply() 메소드는 동일한 기능을 가지고 있지만 차이점은 매개변수를 받는 방식에 있습니다. call()의 경우 첫 번째 매개변수는 변경되지 않는 this 값입니다. 변경되는 점은 나머지 매개변수가 함수에 직접 전달된다는 것입니다. (call() 메소드를 사용할 경우 함수에 전달되는 매개변수가 하나씩 나열되어야 합니다. apply()를 사용할 경우 매개변수 배열이 함수에 전달됩니다.) 다음 코드는 설명합니다.

function add(c, d){
    return this.a + this.b + c + d;
}
var o = {a:1, b:3};
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34 

call과 Apply 모두 다음과 같습니다. 무언가를 변경하는 데 사용됩니다. 함수가 실행될 때 컨텍스트는 즉, 함수 본문 내부에서 this의 포인터를 변경하는 것입니다. JavaScript 함수에는 "정의 컨텍스트"와 "런타임 컨텍스트" 및 "컨텍스트가 변경될 수 있다"라는 개념이 있기 때문입니다.

두 기능은 완전히 동일하지만 매개변수를 받아들이는 방식이 다릅니다. 예를 들어 다음과 같이 정의된 fun 함수가 있습니다.

var fun = function(arg1, arg2) {};

는 fun.call(this, arg1, arg2); 또는 fun.apply(this, [arg1, arg2]);를 통해 호출할 수 있습니다. 그 중에서 지정하려는 컨텍스트는 임의의 JavaScript 객체일 수 있습니다(JavaScript의 모든 것은 객체입니다). 호출은 매개변수를 순서대로 전달해야 하며 Apply는 매개변수를 배열에 넣습니다.

자바스크립트에서는 함수의 매개변수 갯수가 정해져 있지 않기 때문에 적용 조건에 따라 매개변수가 숫자를 확실히 알면 call을 사용하고, 확실하지 않을 때는 적용을 사용하여 매개변수를 푸시하면 됩니다. 배열을 전달하세요. 매개변수 개수가 불확실한 경우 인수 배열을 통해 함수 내에서 모든 매개변수를 탐색할 수 있습니다.

관련 권장 사항: javascript 학습 튜토리얼

위 내용은 javascript에서 호출과 적용의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경