call(), apply(), bind()
apply()
ply () 방법은 두 개의 매개 변수를 수신합니다. 하나는 실행 함수의 작용역이고, 다른 하나는 매개 변수의 그룹입니다.두 번째 매개변수는 Array 인스턴스 또는 arguments 객체일 수 있습니다.예를 들면 다음과 같습니다.
function sum(num1, num2) {
return num1 + num2
}
function callSum1(num1, num2) {
return sum.apply(this, arguments)
}
function callSum2(num1, num2) {
return sum.apply(this, [num1, num2])
}
console.log(callSum1(10, 10)) // 20
console.log(callSum2(10, 10)) // 20
call()
call() 방법은 apply() 방법과 작용이 같고 그 차이는 단지 파라미터를 수신하는 방식이 다르다는 것이다.전자는 매개 변수를 하나하나 열거해야 하고 후자가 수신하는 매개 변수는 모두 하나의 수조에 써야 한다. 예:
function sum(num1, num2) {
return num1 + num2
}
function callSum(num1, num2) {
return sum.call(this, num1, num2)
}
console.log(callSum(10, 10)) // 20
만약arguments 대상이나 그룹 파라미터를 직접 전송하려고 한다면 apply () 방법을 사용하십시오. 그렇지 않으면call () 방법을 사용하는 것이 비교적 편리합니다.사실상 전달 매개 변수는 이 두 가지 방법의 용무가 아니다. 그들이 진정으로 강한 것은 함수를 확장하여 운행하는 작용역을 넓힐 수 있다는 것이다.예를 들면 다음과 같습니다.
window.color = 'red'
var o = { color: 'blue' }
function sayColor() {
console.log(this.color)
}
sayColor()
sayColor.call(this) // red
sayColor.call(window) // red
sayColor.call(o) // blue
앞에서 이것은 모두sayColor 이 방법의 운행 환경을 window로 바꾸었기 때문에 결과는 레드이다. 마지막으로sayColor 이 방법의 운행 환경을 o 대상으로 바꾸는 것은 아래와 같다.
sayColor.call(o)
var o = {
color: 'blue',
sayColor: function () {
console.log(this.color)
}
}
위 코드를 통해call()과 apply() 방법은 함수의 운행 환경을 바꾸는 것이다.
bind()
ECMAScript5는 또한 bind() 방법을 정의합니다.이 방법은 함수의 실례를 만들 것입니다. 이this 값은bind () 함수에 연결된 값입니다.예:
window.color = 'red'
var o = { color: 'blue' }
function sayColor() {
console.log(this.color)
}
var obj = sayColor.bind(o)
console.log(obj) // blue
위 코드는 bind () 방법을 보여줍니다.sayColor 함수를 o 대상에 연결하는 것입니다. 귀속만 하고 실행하지 않으며 마지막 줄만 실행합니다.
총괄: 위의 세 가지 방법은 모두 함수의 운행 환경을 바꾸는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.