몇 년 전, JavaScript를 작성하는 한 AddeventListener 및 AttachEvent와 같은 일반적으로 사용되는 몇 가지 기능을 사용해야합니다. AddeventListener 및 AttachEvent는 고급 기술 및 기능을위한 것이 아니라 기본적인 작업을위한 것이며 그 이유는 다양한 브라우저 간의 차이로 인해 발생합니다. 시간이 지남에 따라 기술이 끊임없이 향상되면서 성능이나 기능을 위해 거의 모든 웹 프로그래머에게 필수적인 JavaScript 기능이 여전히 남아 있습니다.
고주파 호출을 방지하는 분변 기능
이 분산 기능은 이벤트 중심 작업을 수행하는 사람들에게 필수 성능 향상 기능입니다. 스크롤, 크기 조정, 키* 및 기타 이벤트를 사용할 때 다운 스케일링 기능을 사용하지 않으면 작업을 트리거하여 큰 실수를합니다. 다음과 같은 하향 주파수 분해 기능 분노는 코드를 효율적으로 만들 수 있습니다.
// 함수를 반환하면 계속 호출되는 한 // 트리거되지 않습니다. 이 함수는 // n 밀리 초에 대한 요청이 중지 된 후에 호출됩니다. ‘즉시`가 전달되면, 트레일 링 대신 // 선단에 가장자리에서 함수를 트리거합니다. return function () {var context = this, args = argument; var later = function () {timeout = null; if (! 즉시) func.Apply (컨텍스트, args); }; var callnow = 즉시 &&! 타임 아웃; 클리어 타임 아웃 (시간 초과); 시간 초과 = settimeout (나중에 대기); if (callnow) func.Apply (컨텍스트, args); };}; // usagevar myefficelfn = debounce (function () {// 모든 세금이 부과되는 것들}, 250); window.adeventListener ( 'resize', myefficentfn);디오 트언 함수는 제공 한 콜백 함수 만 주어진 시간 간격 내에서 한 번 실행할 수 있도록하여 실행 주파수를 줄입니다. 이러한 제한은 고주파 트리거 이벤트가 발생할 때 특히 중요합니다.
시간/주파수 사이클 감지 기능을 설정합니다
위에서 언급 한 분동 기능은 이벤트의 도움으로 트리거됩니다. 그러나 때로는 그러한 이벤트가 없으므로 가끔씩 한 번만 확인하기 위해 기능을 작성할 수 있습니다.
함수 폴 (fn, 콜백, err, timeout, interval) {var starttime = (new date ()). gettime (); var pi = wind반복 된 호출을 금지하고 한 번만 실행을 허용하는 기능이 한 번
여러 번, 우리는로드를 사용하여 부하가 완료 될 때만 한 번만 실행되도록 제한하는 것처럼 몇 가지 조치를 한 번만 실행하기를 원합니다. 다음 함수를 사용하면 작업을 한 번 실행할 수 있으며 반복적으로 실행되지 않습니다.
한 번 함수 (fn, 컨텍스트) {var result; return function () {if (fn) {result = fn.apply (context || this, arguments); fn = null; } 반환 결과; };} // usagevar canonlyFireOnce = 일단 (function () {console.log ( 'fired!');}); canonlyfireonce (); // "해고!" CanonlyFireonce (); // 나다이 기능은 제공 한 기능이 한 번만 실행되고 반복 실행을 방지 할 수 있습니다.
GetAbSoluteUrl 링크의 절대 주소를 얻으십시오
링크의 절대 주소를 얻는 것은 생각만큼 간단하지 않습니다. 다음은 입력 한 상대 주소를 기반으로 절대 주소를 얻을 수있는 매우 실용적인 기능입니다.
var getAbsoluteUrl = (function () {var a; return function (url) {if (! a) a = a = document.createElement ( 'a'); a.href = url; return a.href;}) (); // usagegetabsoluteurl ( '/someth');여기서 우리는 A 태그 href를 사용하여 완전한 절대 URL을 생성하는데, 이는 매우 신뢰할 수 있습니다.
JavaScript 함수가 시스템 기본 기능인지 여부를 결정합니다.
많은 타사 JS 스크립트는 글로벌 변수에 새로운 기능을 도입 할 것이며 일부는 시스템의 기본 기능을 덮어 쓸 것입니다. 다음 방법은 기본 기능인지 확인하는 것입니다.
; () {// 내부`[[class]]````````[[class]]`의 값 var tostring = object.prototype.tostring; // var fntostring = function.prototyp.toString; // (Safari> 4; 실제로 타이핑) var regctor = /^ /^ /[typed array)를 사용하는 데 사용되었습니다. . +? .replace (/[.*+?^$ {} () | [/] ///]/g, '// $ &') //``toString '의 언급을`.*?'로 대체합니다. . (/Tostring | (function).*? (? = //]/g, '$ 1.?') + '$'); renative.test (fntoString.call (value)) // 일부 환경은 // 정상적인 기본 패턴을 준수하지 않는 DOM 메소드로 표시되기 때문에 isnative;} ()); // ad이 방법은 간결하지는 않지만 여전히 작업을 완료 할 수 있습니다!
JavaScript Insertrule을 사용하여 새로운 CSS 규칙을 만듭니다
때로는 CSS 선택기 (예 : Document.querySelectorall)를 사용하여 노드리스트를 얻은 다음 각 스타일을 차례로 수정합니다. 실제로 이것은 효율적인 접근법이 아닙니다. JavaScript를 사용하여 새로운 CSS 스타일 규칙을 만드는 효율적인 접근법입니다.
// 더 나은 시트 객체 시트를 빌드합니다. style.sheet.cssrules.length);} (); // 함수 시트로 호출하십시오 ( ". Stats {position : regail; top : 0px}");이러한 관행은 매우 효율적입니다. AJAX를 사용하여 새로운 HTML을로드 할 때와 같은 일부 시나리오에서는 새로로드 된 HTML 컨텐츠를 작동 할 필요가 없습니다.
웹 페이지 요소가 특정 속성과 스타일이 있는지 여부를 결정합니다.
함수 matchesselector (el, selector) {var p = element.prototype; var f = p.matches || p.webkitmatchesselector || p.mozmatchesselector || p.msmatchesselector || function (s) {return [] .indexof.call (document.querySelectorall (s), this)! == -1; }; return f.call (el, selector);} // usagematchesselector (document.getElementByid ( 'mydiv'), 'div.someselector [some-attribute = true]')이 7 개의 JavaScript 기능은 모든 웹 프로그래머가 사용 방법을 알아야하는 모든 것입니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.