2012-10-11 3 views
1

나는네임 스페이스 콜백 함수

가 그럼 난 상태 다음 사항을 확인하는 기능이 시나리오를 다음했다. 이 시나리오에 가장 적합한 방법은 무엇입니까? "."

+0

콜백을 '.'로하고 루프를 아래로 내립니다. – canon

+0

나는 그것을 할 수있는 더 좋은 방법이 있어야한다고 생각한다. – emphaticsunshine

답변

2

분할 창으로 시작하는 각 세그먼트를 해결 ()로 호출 :

foo = { 
 
    bar: { 
 
    baz: function() { 
 
     console.log("foo.bar.baz()"); 
 
    } 
 
    } 
 
}; 
 

 
"foo.bar.baz".split(".").reduce((o, n) => o[n], window)();

참고 : 단순화하기 위해, 나는 Array.prototype. reduce()을 사용했습니다. 구형 브라우저의 경우 polyfill을 사용할 수 있습니다.

0
window.foo = { 
    bar: function() { 
     alert(this.val); 
    }, 
    val: "foobar!" 
} 

var callback = "foo.bar"; 

if (callback) { 
    var segments = callback.split('.'), 
     context = window; 
    for (var i = 0; i < segments.length-1; i++) { 
     context = context[segments[i]]; 
    } 
    context[segments[i]](); 
}​ 
관련 문제