반응형
배열을 함수 인수 목록으로 변환
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에서 다음 방법을 읽어보십시오.
- .timeout()
- "..." 연산자(관련된 나머지 "..." 매개 변수 연산자와 혼동하지 마십시오. 두 연산자 모두 읽으면 좋습니다!)
비슷한 토픽에 관한 다른 투고로부터의 매우 읽기 쉬운 예:
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()
이 작업을 수행하는 방법.
@syslogc - 네, 다음과 같이 할 수 있습니다.
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
반응형
'source' 카테고리의 다른 글
컴파일된 언어와 통역된 언어의 차이점은 무엇입니까? (0) | 2022.10.27 |
---|---|
SQL(MySQL) vs NoSQL(CouchDB) (0) | 2022.10.23 |
Guava 라이브러리:가장 유용한 기능 및/또는 숨겨진 기능은 무엇입니까? (0) | 2022.10.23 |
코드 및 마크업 Q&A 이미지 예시 (0) | 2022.10.23 |
Mac php 장인 마이그레이션 오류에서 Larabel 설정:해당 파일 또는 디렉터리가 없습니다. (0) | 2022.10.23 |