2017-12-10 6 views
0

아래 코드를 살펴 보시기 바랍니다. 나는 calllback.call이하는 일을 정확히 수행 할 수 없습니다.jquery에서 callback.call 함수 이해

또한 this와 this [i]의 차이점과 if (callback.call (this, this [i]))가 true 또는 false로 평가되는 방법을 알 수 없습니다.

Array.prototype.each = function(callback) { 
    var i = 0; 
    while (i < this.length) { 
    callback.call(this, this[i]); 
    i++; 
    } 
    return this; 
}; 

Array.prototype.map = function(callback) { 
var i = this.length; 
var found = [] 
while (i--) { 
    if(callback.call(this, this[i])) { 
    found.push(this[i]); 
    } 
} 
return found; 
}; 

기능은 아래라고 :

Array.each(function(value){ 
... 
}) 

Array.map(function(value){ 
... 
}) 
+0

두 경우 모두'each '와'map'에는 함수가 할당됩니다. – CodingYoshi

+0

'[1,2,3] .each (function() {/ * do something * /})'같은 함수를 호출하지 않겠습니까? –

답변

0

내가 calllback.call 일을 정확히 무엇을 할 수 없습니다입니다.

Function.prototype.call

this

callback.call(this, this[i]); 

에 대한 명시 적 값으로 함수를 호출 할 수 있습니다 즉 콜백 내부 this의 값이 될 수있는 세트 제외

callback(this[i]) 

과 동일 현재 상황과 동일합니다.


또한 [I]이이 사이의 차이점이 무엇인지 알 수 없습니다입니다.

여기에서 this은 현재 배열입니다. 따라서 this은 전체 배열을 의미하고 this[i]은 배열의 i 번째 요소를 가져옵니다.


.each 기능이 배열을 통해 의지 루프를하고 각각에 대해 함수를 호출합니다. 이것은 Array.prototype.forEach에 내장 된 javascript와 유사합니다.

.map은 마치 Array.protoype.map의 polyfill이지만 실제로는 .filter 작업을 수행하고있는 것처럼 이름이 지정됩니다. 이상한.

+0

if (callback.call (this, this [i]))가 true 또는 false로 평가되는 방법을 알고 있습니까? –

+0

어떤 함수를 콜백으로 전달합니까? 그 함수가 반환하는 것 모두가 될 것입니다. –