> 웹 프론트엔드 > JS 튜토리얼 > JavaScript는 단순히 네임스페이스 effect_javascript 기술을 구현합니다.

JavaScript는 단순히 네임스페이스 effect_javascript 기술을 구현합니다.

WBOY
풀어 주다: 2016-05-16 16:56:55
원래의
1128명이 탐색했습니다.

Javascript는 기본적으로 네임스페이스를 지원하지 않으므로 해결 방법이 필요합니다.

JavaScript 라이브러리를 만들 때 네임스페이스는 매우 중요합니다. 전역 함수나 클래스를 정의하지 않고도 이 JavaScript 라이브러리를 구성하는 분산된 JavaScript 파일(*.js)을 네임스페이스에 캡슐화할 수 있습니다. 예를 들어, 이 장에서 여러 번 등장하는 Person은 라이브러리의 일부로 적절한 네임스페이스로 캡슐화될 수 있습니다.

코드 5-13:

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

var com = {};
com.anyjava = {};
com.anyjava.Person = function(name) {
//비공개 멤버
var _name = name;

//접근자
this.getName = function() {
return _name;
};
this.setName = function(name) {
_name = name;
};
};
//Prototype
com.anyjava.Person.prototype = {
eat:function() {
Alert(this.getName() "가 먹고 있습니다. Something.");
},
sleep:function() {
Alert(this.getName() "가 자고 있습니다.");
},
walk:function() {
Alert(this.getName() " 걷고 있습니다.");
}
};
var dirk = new com.anyjava.Person("Dirk");
dirk.eat () ;

코드 5-13에서 Java 개발자의 습관에 더 부합하는 네임스페이스를 얻었고 Person 객체를 인스턴스화할 때 명령 공간 경로도 지정해야 합니다.

다른 사람이 개발한 JavaScript 라이브러리를 사용하고 상대적으로 완전한 네임스페이스 계획을 사용하는 경우 매번 긴 네임스페이스를 작성하는 것이 짜증스러울 수 있습니다. 예를 들어, 제가 개발한 JavaScript 라이브러리를 사용하고 있다면 com.anyjava.control.ui 네임스페이스 아래에 사용하고 싶은 확장 UI 컨트롤이 많이 있을 것입니다. var xxx = new com이라고 쓰고 싶지 않을 것입니다. .anyjava.control.ui.XXX(). 네임스페이스 별칭을 지정하면 코드 5-14에서 볼 수 있듯이 코드 5-13에서 Person을 인스턴스화하는 또 다른 방법인 덜 반복적인 코드를 작성할 수 있습니다.

코드 5-14:

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

var ns = com.anyjava;
var dirk = new ns.Person("Dirk");
dirk.eat();

마지막으로 할 일은 설명할 것은, 네임스페이스를 사용할 때 주의해야 할 문제가 있다는 것입니다. JavaScript 라이브러리를 작성할 때 대부분의 경우 네임스페이스 선언문은 JavaScript 파일의 여러 위치에 동시에 또는 여러 JavaScript 파일에 나타날 수 있습니다. 그러나 JavaScript 언어 기능은 마지막으로 선언된 변수가 이전에 선언된 변수를 덮어쓴다는 것입니다. 동일한 이름을 가진 변수는 반복 선언 문제에 주의해야 합니다. 즉, 네임스페이스 개체를 선언할 때마다 먼저 코드 5와 같이 네임스페이스 개체가 이미 존재하는지 확인하는 것이 좋습니다. 15:

코드 5~15:

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

if (typeof com.anyjava == "undefine") var com.anyjava = {};

이 방법으로 "com.anyjava" 객체가 선언된 것만 보장할 수 있습니다. 한 번.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿