/**
* @author Super Sha
* QQ:770104121
* E-Mail:supei_shafeng@163.com
* 발행일: 2009-3-27
* All Rights Reserved
*/
var JsHelper={}; //JsHelper 루트 네임스페이스 선언
JsHelper.DOM = {}; //JsHelper 디렉터리 아래에 DOM 네임스페이스 선언
JsHelper.Event={}; //JsHelper 디렉터리에 이벤트 이벤트 네임스페이스를 선언합니다
JsHelper.Browser={}; //JsHelper 디렉터리에 브라우저 관련 함수를 선언합니다.
JsHelper. }; //Jshelper 디렉토리에 Ajax 관련 함수 네임스페이스를 선언합니다.
JsHelper.String={}; //JsHelper 디렉토리에 String 관련 네임스페이스를 선언합니다.
/*
* $ ()는 여러 매개변수를 입력할 수 있으며 객체 배열을 반환합니다.
*/
var $=function(){ //$ 메서드의 단순화된 버전
var elements=new Array (); if(arguments.length==0){ //매개변수가 비어 있으면 문서 요소를 반환합니다.
return document;
}
for (var i = 0; i { var element = 인수[i];
if (typeof element == string )
{
element = document.getElementById(element)
}
if (arguments.length == 1)
{
return 요소;
}
elements.push(element)
}
return 요소; .DOM.$=function()
{
var elements=new Array();
for (var i = 0; i
var 요소 = 인수[i];
if (요소 유형 == 문자열 ) {
element = document.getElementById(element)
}
if (arguments.length == 1)
{
요소 반환;
}
elements.push(요소);
}
요소 반환;
/*
* $Value() 여러 매개변수를 입력할 수 있으며 획득한 객체의 값 배열을 반환합니다.
*/
JsHelper.DOM.value=function()
{
var value=new Array()
for ( var i = 0; i {
var 요소 = 인수[i]
if (typeof(element) == 문자열 )
{ var v =document.getElementById(element).value;
}
if(arguments.length==1)
{
return v;
}
values .push(v);
}
반환 값;
}
/*
makeArray는 입력 매개변수에 대한 배열 반환을 생성합니다. 매개변수가 비어 있으면 "정의되지 않음"을 반환하고, 그렇지 않으면 Array*/
JsHelper.String.makeArray=function()
{
var value=new Array()
if(arguments.length>0){
for ( var i = 0; i {
var element=arguments[i];
if(typeof element == "string")
{
values. ); }
}
else
{
"정의되지 않음" 반환
}
값 반환; 🎜>* 연결 문자열 성능 문제를 처리하기 위해 StringBuilder 클래스 선언
*/
JsHelper.String.StringBulider={
_strs:new Array(),
append: function( str){ // _strs 속성에 문자열 추가
this._strs.push(str);
return this
},
toString:function(){
if (arguments .length != 0)
return this._strs.join(arguments[0]); // 조인 매개변수에 대한 선택적 매개변수를 허용하여 _strs 속성을 결합한 후 문자열을 반환합니다.
} else{
return this._strs.join ("");
}
}
};
/*
* $TagName()은 매개변수를 입력하고 Elements TagNeme 객체의 배열을 반환합니다.
* /
JsHelper.DOM.tagName=function()
{
var element=arguments[0]
if(typeof element== string )
{
var tagname=document .getElementsByTagName(요소)
}
return 태그 이름
}
//=================== ======================================
/*
* 라벨: HTML 라벨 ID
* responseText에만 사용 가능
* GET 메소드에만 사용 가능
*/
var _xmlhttp;//전역 XMLHttpRequest 객체 선언 예시
function Ajax(method, url, label){
this.method = method;
this.url = url
try {
_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP" )
catch (e) {
try {
_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
}
catch(s) {
_xmlhttp = new XMLHttpRequest(); }
}
Ajax.prototype.ResponseText = function(){
_xmlhttp.onreadystatechange = this.onComplete;
_xmlhttp.open(this.method, this .url, true)
_xmlhttp .send(null);
}
Ajax.prototype.onComplete = function(){
if (_xmlhttp.readyState == 4) {
if ( _xmlhttp.status == 200) {
$(label).innerHTML = _xmlhttp.responseText;
}
}
}
this.ResponseText()
}
//======= ==========================================
/*
* 브라우저 유형 결정
*/
var ua = navigator.userAgent.toLowerCase()
if (window.ActiveXObject) {
JsHelper.IE = ua.match(/msie ([d.] )/)[1];
}
else if (document.getBoxObjectFor) {
JsHelper.Browser.Firefox = ua.match( /firefox/([d.] )/ )[1];
else if (window.MessageEvent && !document.getBoxObjectFor) {
JsHelper.Browser.Chrome = ua.match(/chrome /([d.] )/)[ 1];
}
else if (window.opera) {
JsHelper.Browser.Opera = ua.match(/opera.([d.] ) /)[1];
else if (window.openDatabase) {
JsHelper.Browser.Safari = ua.match(/version/([d.] )/)[1];
/*
* XMLHttpRequest 객체의 인스턴스를 선언하고 인스턴스를 반환합니다.
*/
JsHelper.Ajax.createRequest=function()
{
var xmlhttp=null
try
{
xmlhttp=new XMLHttpRequest();
}
catch(trymicrosoft){
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); > }
catch(othermicrosoft){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
}
}
return xmlhttp; *
* 일반적인 AddEventListener 함수인 obj는 DOM 요소입니다.
*/
JsHelper.Event.addEventlistener=function(labelID,eventMode,fn)
{
var obj=JsHelper.DOM . $(labelID);
if (typeof window.addEventListener != 정의되지 않음) {
obj.addEventListener(eventMode, fn, false)
else
if (문서 유형. addEventListener != 정의되지 않음 ) {
obj.addEventListener(eventMode, fn, false)
}
else
if (typeof window.attachEvent != 정의되지 않음 ) {
obj.attachEvent(" on " eventMode, fn);
}
else {
false 반환;
}
true 반환;
}
/*
* 포함 Douglas Crockford의 함수 메소드 확장은 Douglas Crockford에게 있습니다. 이로써
*/
Function.prototype.method = function (name, func) {
this.prototype[ name ] = func;
return this;
};
Function.method( 상속 , function (parent) {
var d = {}, p = (this.prototype = new parent() ) ;
this.method( base , function uber(name) {
if (!(name in d)) {
d[name] = 0;
}
var f, r , t = d[이름], v = parent.prototype;
if (t) {
while (t) {
v = v.constructor.prototype;
t
}
f = v[이름];
} else {
f = p[이름]
if (f == this[이름]) {
f = v [ 이름];
}
}
d[이름] = 1;
r = f.apply(this, Array.prototype.slice.apply(인수, [1])); >d[이름] -= 1;
return r;
});
return this;
})
Function.method( swiss , function (parent) > for (var i = 1; i var name = 인수[i];
this.prototype[name] = parent.prototype[name] }
return this;
});
/*
* IE가 HTMLElement를 지원하지 않는 문제에 대한 해결책*/
var DOMElement ={
확장 : function(name,fn)
{
if(!document.all)
{
eval("HTMLElement.prototype." name " = fn")
}
else
{
var _createElement = document.createElement;
document.createElement = function(tag)
{
var _elem = _createElement(tag); " name " = fn");
return _elem;
}
var _getElementById = document.getElementById;
document.getElementById = function(id)
{
var _elem = _getElementById ( id);
eval("_elem." name " = fn");
return _elem;
}
var _getElementsByTagName = document.getElementsByTagName = function(tag) )
{
var _arr = _getElementsByTagName(tag);
for(var _elem=0;_elem<_arr.length>eval("_arr[_elem]." name " = fn " );
return _arr;
}
}
}
};
/*
* 다음은 아버지 John Resig의 여러 DOM 쿼리 함수를 모델로 한 것입니다. jQuery 기능
*/
DOMElement.extend("previous",function(){ // 이전Sibling DOM 함수와 유사 <_arr.length>var elem=this;
do{
elem=elem. PreviousSibling ; nextSibling DOM 함수
var elem=this; do{
elem=elem.nextSibling
}while(elem&&elem.nodeType!=1)
return elem; ;
DOMElement.extend("first",function(num){ //firstChild DOM 함수와 유사, 부모와 동일
var elem=this;
num=num||1;
for (var i = 0; i elem = elem.firstChild
}
return (elem && elem.nodeType!=1 ? next(elem):elem); >} );
DOMElement.extend("last",function(num){ //lastChild DOM 함수와 유사, 부모와 동일
var elem=this;
num=num||1;
for (var i = 0; i elem = elem.lastChild
}
return (elem && elem.nodeType!=1 ? prev(elem):elem) ;
});
DOMElement.extend("parent",function(num){ //parentNode의 여러 수준을 반환할 수 있습니다. 예를 들어 parent(2)는 elem.parent()와 동일합니다. parent();
var elem=this;
num=num ||1;
for (var i = 0; i if (elem != null)
elem = elem.parentNode; }
}
return elem;
})
DOMElement.extend("hasChilds",function(){ //있는 경우 판단합니다. 하위 노드
if(this!=null && this.hasChildNodes()){
return true;
} else{
return false;
DOMElement.extend("text",function(){ //레이블의 텍스트를 가져옵니다. 매개변수가 0이 아닌 경우 레이블에서 텍스트 버전을 설정할 수 있습니다. 입력에도 적합합니다. labels
try{ //InnerText를 지원하지 않는 Firefox용 솔루션
HTMLElement.prototype.__defineGetter__("innerText",function(){
var anyString = "";
var childS = this.childNodes ; for(var i =0; i
anyString = childS[i].tagName == " BR" ? "n : childS[ i].innerText
}
else if(childS[i].nodeType == 3) {
anyString = childS[i].nodeValue;
}
}
return anyString; 🎜>}
catch(e){}
if (arguments.length == 1) {
if (this.innerText) {
this.innerText = 인수[0]
}
else {
this.value = 인수[0];
}
}
else {
return this.innerText || this.value; >})
DOMElement.extend("html",function(){ //요소의 innerHTML을 가져옵니다. 매개변수가 0이 아닌 경우 요소 내에서 텍스트와 하위 노드를 설정할 수 있습니다.
(arguments.length= =0){
return this.innerHTML;
}
else if(arguments.length==1)
{
this.innerHTML=arguments[0];
}
});
/*
* 다음은 className
*/
DOMElement.extend("getClassName",function(){ / /Return 요소 className
if(this!=null&&this.nodeType==1){
return this.className.replace(/s /, ).split( )
}
return null;
}); DOMElement.extend("hasClassName",function(){ //클래스가 있는지 확인 class
if(this!=null&&this.nodeType==1){
var 클래스=this.getClassName();
for(var i=0;i
}else{
return false;
}
})
DOMElement.extend("addClass",function(){ //요소에 클래스를 추가할 수 있습니다. 한 번에 여러 클래스
if( this!=null&&this.nodeType==1){
for (var i = 0; i
return this;
}
return null;
}); /클래스 제거, 매개변수가 없으면 모든 클래스 삭제
if (this != null && this.nodeType == 1) { if (arguments.length == 0) {
this .className = "";
}
else if(arguments.length!=0) {
varclasses=this.getClassName()
for (var i = 0; i
classes =classes.join( " ").replace(arguments[i], ).split(" ");
}
}
}
this.className=classes.join("
} return this; }
return null;
})
JsHelper.__toggleflag=false; //판단 스위치 추가
DOMElement.extend("toggleClass",function( classname){ //두 번의 클릭으로 호출되는 함수 다름
if(this!=null && this.nodeType==1){
this.onclick=function(){
if(JsHelper.__toggleflag== false){
this.addClass(클래스 이름);
JsHelper.__toggleflag = true;
}else if (JsHelper.__toggleflag == true) {
this.removeClass(클래스 이름); JsHelper.__toggleflag = false;
}
}
}
})
/*
* jQuery의 클릭 방법이 사용되는 방식과 유사하게 각 개체에 클릭 방법을 추가합니다. 🎜>*/
DOMElement.extend("click",function(){
if(this!=null && this.nodeType==1){
if(arguments.length==0){
alert("클릭했을 때 아무 작업도 수행하지 않았습니다.");
}else{
this.onclick=arguments[0];
}
}); 🎜>
/*
* hover 메소드를 각 객체로 확장합니다. 이 메소드는 두 개의 함수를 매개변수로 허용합니다.
*/
DOMElement.extend("hover",function(){
if (this!=null && this.nodeType==1){
if(arguments.length!=2){
alert("매개변수로 두 개의 함수가 필요합니다.")
}else{
this.onmouseover=arguments[ 0];
this.onmouseout=arguments[1];
}
}
})
/*
* 이벤트 추가 기능 각 요소에
* /
DOMElement.extend("addEvent",function(eventtype,fn){
if(document.all){
this.attachEvent("on" eventtype,fn) ;
}else{
this.addEventListener(eventtype,fn,false);
}
})
/*
* 속성 및 속성 값을 매개변수로 사용
*/
DOMElement.extend("css",function(){
if(this!=null && this.nodeType==1){
if(arguments .length!=2){
alert("매개변수로 두 개의 함수가 필요합니다.");
}else{
this.style[arguments[0]]=arguments[1]; 해당 스타일 속성의 값
return this;
}
}
return null
})
/*
* //다음에 해당하는 모든 요소를 찾아 반환합니다. 특정 클래스에 존재하며 이름은 className이고 유형은 HTML 태그 유형입니다.
*/
var hasClass = function(name,type){
var r = new Array()// var re = new RegExp(name," g");
var e=document.getElementsByTagName(type||"*")
for(var i=0;i
for (var j = 0; j
r.push(e[i] );
}
}
}
return r;
}
/*
* 특정 하위 요소 참조 모음을 반환합니다. 요소가 없으면 다음을 호출합니다. 이 메서드의 경우 기본값은 document
*/
DOMElement.extend("find",function(){
var r=new Array(); if(elem!=null && (elem.nodeType==1||elem.nodeType==9)){
var e=elem.getElementsByTagName(인수 [0]);
for(var i =0;i
return r; }
널을 반환
}) ;

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

웹 개발에서 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 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.


핫 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 통합 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

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