(10)addEvent
인터넷에서 가장 인기 있는 버전은 Scott Andrew의 버전입니다. JavaScript 커뮤니티에서 대회를 열거나(Pro Javascript Techniques의 100페이지에서 이 이벤트를 볼 수 있음) PPK 웹사이트를 검색하여 요청한다고 합니다. 이벤트 추가 및 이벤트 제거 기능으로 승리자가 됩니다. 그의 구현은 다음과 같습니다.
function addEvent( elm, evType , fn, useCapture) {
if (elm.addEventListener) {
elm.addEventListener(evType, fn, useCapture);//DOM2.0
return true; >else if (elm.attachEvent) {
var r = elm.attachEvent('on' evType, fn);//IE5
return r
}
else {
elm[ 'on' evType] = fn;//DOM 0
}
}
다음은 Dean Edwards 버전
// http:// dean.edwards.name/weblog/2005/10/add-event/
function addEvent(element, type, handler) {
//각 이벤트 핸들러 함수에 고유 ID 할당
if ( !handler.$$guid) handler.$$guid = addEvent.guid;
//if (!element.events) 요소의 이벤트 유형에 대한 해시 테이블을 생성합니다. events = {};//각 "요소/이벤트" 쌍에 대한 이벤트 핸들러의 해시 테이블 생성
var handlers = element.events[type]
if (!handlers) {
handlers = element .events[type] = {};//기존 이벤트 핸들러 저장(있는 경우)
if (element["on" type]) {
handlers[0] = element[" on " type];
}
}
//이벤트 핸들러 함수를 해시 테이블에 저장
handlers[handler.$$guid] = handler;
//전역 이벤트 할당 핸들러 함수는 모든 작업을 수행합니다
element["on" type] = handlerEvent
//고유 ID를 생성하는 데 사용되는 카운터
addEvent.guid = 1; (요소, 유형, 핸들러) {
//해시 테이블에서 이벤트 핸들러 함수 삭제
if (element.events && element.events[type]) {
delete element.events[type ][handler. $$guid];
}
};
function handlerEvent(event) {
var returnValue =
//이벤트 객체 캡처(IE에서는 전역 이벤트 객체 사용)
event = event || fixEvent(window.event);
//이벤트 처리 함수의 해시 테이블에 대한 참조 가져오기
var handlers = this.events[event.type]// 각 핸들러 함수 실행
for (var i in handlers) {
this.$$handleEvent = handlers[i]
if (this.$$handleEvent(event) === false) {
returnValue = false;
}
}
return value;
}
//IE의 이벤트 객체에 "누락된" 함수 추가
function fixEvent(event) {
//표준 W3C 메소드 추가
event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation;
return event;
fixEvent.preventDefault = function() {
this.returnValue = false;
};
fixEvent.stopPropagation = function() {
this.cancelBubble =
}; 함수는 매우 강력하며 IE의 이러한 포인팅 문제를 해결합니다. 이벤트는 항상 첫 번째 매개변수로 전달되므로 브라우저 간 사용이 쉬워집니다.
또한 HTML5 워킹 그룹 버전도 소중히 여겼습니다.
코드 복사
코드는 다음과 같습니다.
var addEvent=(function(){
if(document.addEventListener){
return function(el,type,fn){
return function(el,type,fn){
if(el.length){
for (var i=0 ;i
}
}else{
el.attachEvent('on' type,function() {
return fn.call(el,window.event);
}
}
}
(9) addLoadEvent()
이 기능에 대해서는 자세히 설명하지 않고 약간 느릴 뿐입니다. 주요 라이브러리에서는 기본적으로 이를 무시하고 자체적으로 domReady 버전을 구현합니다. 다음은 Simon Willison의 구현입니다.
코드 복사
코드는 다음과 같습니다.
var addLoadEvent = function( fn) {
if (typeof window.onload != 'function') {
window.onload =
}else {
(8) getElementsByClass()
저는 수집하는 습관이 있고 많은 버전을 가지고 있는데, 마침내 스스로 브레인스토밍하고 구현했습니다. 다음은 내 구현입니다.
var getElementsByClassName = function (searchClass , node,tag) {
if(document.getElementsByClassName){
return document.getElementsByClassName(searchClass)
}else{
node = node || 태그 || "*";
var 클래스 = searchClass.split(" "),
elements = (tag === "*" && node.all)? node.getElementsByTagName(tag) ,
patterns = [],
returnElements = [],
current,
match
var i =classes.length
while(--i >= 0) {
patterns.push(new RegExp("(^|\s)" 클래스[i] "(\s|$)"))
}
var j = elements.length; >while( --j >= 0){
current = elements[j];
match = false
for(var k=0, kl=patterns.length; k
if (!match) break
}
if (match) returnElements.push(current); }
return returnElements;
}
}
(7) cssQuery()
별칭은 Dean Edwards가 처음 구현한 getElementsBySeletor입니다. JQuery 및 기타 클래스 라이브러리에는 해당 구현이 있으며 그 중 JQuery는 이를 $() 선택기에 통합하고 그 명성은 이전 버전의 명성을 뛰어넘습니다. 그러나 IE8과 같은 최신 브라우저는 이미 querySelector 및 querySelectorAll 메소드를 구현했습니다. IE6 및 IE7이 폐기되면 쓸모가 없게 됩니다. Wuyou는 구현 원칙에 대해 설명했습니다. 너무 길어서 내용이 잘 안 나오네요. 자세한 내용은 원저자 홈페이지에서 확인하시면 됩니다.
은 DOM 요소를 표시하거나 숨기는 데 사용됩니다.
el.style.display = 'none''
}
else {
el .style.display = '';
}
}
(5) insertAfter()
DOM은 insertBefore만 제공하므로 insertAfter를 구현해야 합니다. 우리 스스로. 하지만 이제 Firefox를 제외한 모든 브라우저에서는 insertAdjacentElement가 더 나은 선택이라고 생각합니다. Jeremy Keith 버전은 다음과 같습니다.
(4) inArray()
는 무언가가 존재하는지 확인하는 데 사용됩니다. check 배열 값에서는 Prototype 클래스 라이브러리에서 다음 메서드를 가져옵니다.
return true; }
}
return false;
};
다른 버전:
코드 복사
}
}
return false
(3) getCookie(), setCookie(), deleteCookie()
BBS나 상업용 웹사이트를 만드는 분들은 로그인할 때마다 비밀번호를 입력하라고 요구할 이유가 없습니다. 자동 로그인 기능을 구현하려면 쿠키를 사용해야 합니다.
코드 복사
function getCookie( name ) {
var start = document.cookie.indexOf( name "=" );
var len = 시작 이름.길이 1;
if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
return null;
}
if ( start == -1 ) 반환 null;
var end = document.cookie.indexOf( ';', len );
if ( end == -1 ) end = document.cookie.length;
return unescape( document.cookie.substring( len, end ) );
}
function setCookie( 이름, 값, 만료, 경로, 도메인, 보안 ) {
var today = new Date();
today.setTime( today.getTime() );
if (만료) {
만료 = 만료 * 1000 * 60 * 60 * 24;
}
varexpires_date = new Date( today.getTime() (expires) );
document.cookie = name '=' escape( value )
( ( 만료 ) ? ';expires='expires_date.toGMTString() : '' ) //expires.toGMTString()
( ( 경로 ) ? ';path=' 경로 : '' )
( ( 도메인 ) ? ';domain=' 도메인 : '' )
( ( 보안 ) ? ';보안' : '' );
}
function deleteCookie( 이름, 경로, 도메인 ) {
if ( getCookie( 이름 ) ) document.cookie = name '='
( ( 경로 ) ? ';path=' 경로: '')
( ( 도메인 ) ? ';domain=' 도메인 : '' )
';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}
(2)getStyle()与setStyle()
所有UI控件島应该存函数,动态设置样式与获取样式。这个可以写得很短,也可以写得很长,但要精确取得样式,一个字:难!但我发现许多问题ت是发端于IE,微软的开发人员好好image从来不打算给takegetCompulatedStyle这样的函数, 与 최근의 현재Style会返回auto,inhert, ' '等让你哭笑不得的值,这还没有算上IE怪癖模式带来的难島呢! 내 취향의 특징:
function setStyle(el,prop,value){
if (prop == "opacity" && ! "v1"){
//IE7 bug:filter 滤镜要求 hasLayout=true 方可执行(否则没有效果)
if (!el.currentStyle || !el .currentStyle.hasLayout) el.style.zoom = 1;
prop = "필터";
if(!!window.XDomainRequest){
value ="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=" value*100 ")";
}else{
value ="alpha(opacity=" value*100 ")"
}
}
el.style.cssText = ';' (prop ":" 값);
}
function getStyle(el, style){
if(! "v1"){
style = style.replace(/-(w)/g, function(all, letter){
return letter.toUpperCase()
});
el.currentStyle[스타일]을 반환합니다.
}else{
return document.defaultView.getCompulatedStyle(el, null).getPropertyValue(style)
}
}
有关setStyle还可以看我另一篇博文,毕竟现在设置的样式city是内联样式,与html混杂在一起。
(1)$()
实至name归,最值钱的函数,可以节省多少流流啊。最先由Prototype.js는 那是洪荒时代遗留下来的珍兽,现许多变种。代码如下:
elements.push(요소);
}
요소를 반환합니다.
}

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版
시각적 웹 개발 도구
