[JAVA SCRIPT] 자바 스크립트 문자열로 eval 사용하지 않고 함수 호출하기.
구글 라이브러리를 사용하여 암호화 진행하려던 와중에
단순히 아래와 같은 js를 작성해보았다.
단순히 아래와 같은 js를 작성해보았다.
window.onload = function() {
document.getElementById('MD5').innerHTML = CryptoJS.MD5("MESSAGE");
document.getElementById('SHA1').innerHTML = CryptoJS.SHA1("MESSAGE");
document.getElementById('SHA256').innerHTML = CryptoJS.SHA256("MESSAGE");
document.getElementById('RIPEMD160').innerHTML = CryptoJS.RIPEMD160("MESSAGE");
};
위 코드를 작성하다보니 더 간단히 작성할 수는 없을까? 라는 생각을 해보았다.
규칙이라함은 아래와 같다.document.getElementById(MD5).innerHTML = CryptoJS.MD5("MESSAGE"); document.getElementById(SHA1).innerHTML = CryptoJS.SHA1("MESSAGE"); document.getElementById(SHA256).innerHTML = CryptoJS.SHA256("MESSAGE"); document.getElementById(RIPEMD160).innerHTML = CryptoJS.RIPEMD160("MESSAGE");
Id와 CryptoJS.* 의 단어가 같다는 것이다.
그럼 string 문자열로 함수를 호출할 수 있는가? 라는 생각이 든다.
string kind = CryptoJS.MD5
kind("MESSAGE") == CryptoJS.MD5("MESSAGE") // true?
문자열로 함수를 호출하는 방법을 공유해보려 한다.
var kind = "MD5";
var fn = window['CryptoJS'];
fn[kind]("MESSAGE");
위 코드처럼 실행하면 정상적으로 실행이 된다.
아래 예시입니다.
var FooClass = function() {
this.smile = function() {};
}
var method = "smile";
var foo = new FooClass();
foo[method](); // call smile method()
참고사이트
https://stackoverflow.com/questions/9854995/javascript-dynamically-invoke-object-method-from-string
댓글
댓글 쓰기