>웹 프론트엔드 >JS 튜토리얼 >JavaScript로 함수를 동적으로 호출하는 방법(2가지 방법)_javascript 기술

JavaScript로 함수를 동적으로 호출하는 방법(2가지 방법)_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:34:431306검색

최근 사용자들은 UI 인터페이스의 상호작용에 점점 더 중점을 두고 있으며, 점차 작은 용의 보조 역할에 불과했던 JavaScript(이하 JS)가 그 주역이 되어 많은 부분을 차지하고 있습니다. .

예를 들어 최근 인기 있는 ASP.NET MVC에는 JQuery가 직접 포함될 수 있습니다.

MVC를 한동안 사용한 후 Xiaolong은 MVC의 컨트롤러가 전혀 JS에 의해 제어된다는 것을 느꼈습니다. UI를 어떻게 독립적으로 작동하게 만들고 이를 아티스트에게 넘겨주는지도 큰 의문처럼 느껴졌습니다.
뒤에 있는 아티스트는 이미지만 그리고 끌어올 수 있는 것 같습니다. JS, Flash 및 기타 프런트엔드 제어 언어를 알아야 인기를 얻을 수 있습니다.

여기서 작은 용은 JavaScript를 사용하여 함수를 동적으로 호출하는 방법을 소개합니다. 이때 독자가 다음 기술이 어디에 적용될 수 있는지 이해할 수 있도록 전제를 먼저 소개해야 합니다.
일반적으로 동적 호출을 사용합니다. 기본적으로 백엔드는 프런트엔드 JS 프레임워크에서 호출되는 JS 코드를 동적으로 생성합니다.

이것의 목적은 UI의 필드, 스타일, 데이터 등을 동적으로 설정하는 것입니다. 또 다른 가능성은 JS 프레임워크의 확장성을 유지하여 후속 개발자가 확장할 수 있도록 추가 코드를 작성할 수 있다는 것입니다. 각 프로그램의 특성을 기반으로 원본 JS 프레임워크의 기능을 구현합니다.

아래에 소개하겠습니다. Xiaolong이 알고 있는 한, 동적 호출 기능에는 다음 두 가지 방법이 있어야 합니다

코드 복사 코드는 다음과 같습니다.

function myAlert(value) {
document.write("myAlert - " value "
")
}
$( function () {
eval("myAlert")("test");
window["myAlert"]("test");
}

일반적으로 말하면 함수 존재 여부를 쿼리하기 위해 window 객체를 사용하는 것이 더 형식적입니다. eval을 사용하는 것은 너무 유연하기 때문에 위험합니다.

그리고 위와 같이 직접 구현하면 다음과 같은 문제가 발생합니다. 함수가 호출되면 전체 화면이 틀리게 되므로 사용시에는 eval을 사용하는 것이므로 판단식을 추가해야 합니다. 함수 개체를 생성하고 창에서는 개체가 있는지 여부만 쿼리하므로 함수가 없으면 eval이 직접 오류를 보고하므로 독자가 차이점을 더 잘 이해할 수 있습니다. 🎜>
코드는 다음과 같습니다. 다음과 같습니다:
function myAlert(value) { document.write("myAlert - " value "
") } $(function () {
var fnName = "myAlert";
var fn = window[fnName];
if (typeof fn == "function") {
fn.apply(window, ["window - test "]);
}
}


마침내 다음과 같은 또 다른 방법을 직접 생각해냈습니다.




코드 복사

코드는 다음과 같습니다.
function myAlert(value) { document.write("myAlert - " value "< br>"); } $(function () { if (typeof (myAlert) == 'function') { myAlert("typeof - test");
}
}


이 방법은 유연성을 다소 희생하지만 반대로 Init() 프레임워크의 로드() 등과 같은 후속 개발자의 명명 원칙을 제한하는 데 사용될 수 있습니다. 방법으로 사용방법을 고정할 수 있어 확산되지 않으며, 추후 유지관리 비용도 절감됩니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.