IT story

배열을 함수 인수 목록으로 변환

hot-time 2020. 4. 14. 19:16
반응형

배열을 함수 인수 목록으로 변환


이 질문에는 이미 답변이 있습니다.

JavaScript의 배열을 함수 인수 시퀀스로 변환 할 수 있습니까? 예:

run({ "render": [ 10, 20, 200, 200 ] });

function run(calls) {
  var app = .... // app is retrieved from storage
  for (func in calls) {
    // What should happen in the next line?
    var args = ....(calls[func]);
    app[func](args);  // This is equivalent to app.render(10, 20, 200, 200);
  }
}

예. 현재 JS 버전에서는 다음을 사용할 수 있습니다.

app[func]( ...args );

ES5 및 이전 사용자는 다음 .apply()방법 을 사용해야합니다 .

app[func].apply( this, args );

MDN에서 다음 방법을 읽으십시오.


비슷한 주제에 대한 다른 게시물의 매우 읽기 쉬운 예 :

var args = [ 'p0', 'p1', 'p2' ];

function call_me (param0, param1, param2 ) {
    // ...
}

// Calling the function using the array with apply()
call_me.apply(this, args);

그리고 여기 내가 개인적으로 가독성을 좋아했던 원래 게시물에 대한 링크


app[func].apply(this, args);

Stack Overflow에 게시 된 유사한 질문을 살펴볼 수 있습니다 . 그것은 사용 .apply()이 작업을 수행하는 방법.


@bryc-예, 다음과 같이 할 수 있습니다 :

Element.prototype.setAttribute.apply(document.body,["foo","bar"])

그러나 그것은 다음과 비교할 때 많은 작업과 난독 화처럼 보입니다.

document.body.setAttribute("foo","bar")

참고 URL : https://stackoverflow.com/questions/1316371/converting-an-array-to-a-function-arguments-list


반응형