>  기사  >  웹 프론트엔드  >  JavaScript_Basic 지식을 바탕으로 네임스페이스 기능을 간단하게 분석

JavaScript_Basic 지식을 바탕으로 네임스페이스 기능을 간단하게 분석

WBOY
WBOY원래의
2016-05-16 17:29:55974검색

NetEase나 Sina 또는 다른 웹사이트에서 이와 유사한 것을 사용하는 것을 보았고 당시 제 js 수준은 매우 낮아서 그 자리에서 충격을 받았습니다.
그런데 앞으로 볼 때 헷갈리지 않도록 이번에는 제가 직접 분석해 볼 생각이에요.

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

//호출 예: bradio.namespace( "bradio.lang.array");
//다음은 바이두에서 컴파일한 소스코드입니다. 변수는 모두 a, b, c, d... 스펙 포인트는 나중에 다시 작성하겠습니다.
//자, 분석을 시작하겠습니다
bradio.namespace = function () { //네임스페이스 생성
var a = 인수, //["bradio.lang.array"]
b = null, //상위 객체를 저장하는 데 사용됩니다.
c, d, e, f; //c는 카운터, d는 내부 루프의 카운터, e는 분할된 네임스페이스 배열, f는 인수 매개변수 길이
c = 0;
for (f = a.length; c < f; c ) {
e = ("" a[c]).split("."); //분할 네임스페이스 분할, ["bradio", "lang", "array"]
b = bradio; //기본 객체, 이 객체를 기반으로 네임스페이스 추가
for (d = "bradio" = = e[0] ? 1 : 0; d < e.length; d ) //첫 번째가 bradio인 경우 ["bradio","lang","array"]
           b[e[ d]] = b[e[d]] || {}, b = b[e[d]]
                                                                                                                             b       = b[e[d]] || {} //현재 개체가 실행된 경우 on, 현재 객체를 사용합니다. 존재하지 않으면 빈 객체를 할당합니다.
//b = b[e[d]] //단어 객체 b로 덮습니다. 다음 루프는 하위 객체를 기반으로 네임스페이스를 추가합니다. object
}
return b//객체의 마지막 레이어를 반환합니다
};

다음과 같이 구성됩니다. 버전 이해

코드 복사 코드는 다음과 같습니다.
//bradio.namespace("bradio.lang.array");
bradio.namespace = function () { //네임스페이스 생성
var args = 인수,
parent = null,
arr, i, j, len;
for (i=0, len = args.length; i < len; i ) {
arr = ("" args[i]).split(".");
parent = bradio;
for(j = "bradio " == arr[0] ? 1 : 0; j < arr.length; j ) {
parent[ arr[j] ] = parent[ arr[j] ] || {};
                                                 ~                                                           완전히 옳지 않습니다. 모든 사람이 오해하지 않도록 지적해 주시기 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.