JacacaScript 개인 변수 (2) 정적 개인 변수
(function() {
//
var privateVariable = 10;
function privateFunction() {
return false;
}
//
MyObject = function() {}
// /
MyObject.prototype.publicMethod = function() {
privateVariable++;
return privateFunction();
};
})()
이 모델은 개인 작용역을 만들고 그 중에서 구조 함수와 상응하는 방법을 봉인했다.사유 작용 영역에서 먼저 사유 변수와 사유 함수를 정의한 다음에 구조 함수와 그 공유 방법을 정의했다.
공유 방법은 원형에 정의된 것으로 전형적인 원형 모델을 나타낸다.
주의해야 할 것은 이 모델은 구조 함수를 정의할 때 함수 성명을 사용하지 않고 함수 표현식을 사용했다는 것이다.함수 성명은 국부 함수만 입을 수 있지만, 그것은 우리가 원하는 것이 아니다.
같은 이유로 My Object를 선언할 때 var 키워드를 사용하지 않았습니다.
명심: 선언되지 않은 변수를 초기화하면 항상 전역 변수가 생성됩니다.
따라서 MyObject는 전역 변수가 되어 개인 역할 영역 밖에서 접근할 수 있다.그러나 엄격한 모드에서 성명되지 않은 변수 부여가 오류를 초래할 수 있다는 것도 알아야 한다.
이 모델은 구조 함수에서 특권 방법을 정의하는 주요한 차이점은 사유 변수와 함수식이 실례에 의해 공유되는 데 있다.
특권 방법은 원형에 정의되어 있기 때문에 모든 실례는 같은 함수를 사용한다.이 특권 방법은 패키지로서 역할 영역을 포함하는 인용을 항상 저장합니다.
(function() {
var name = "";
Person = function(value) {
name = value;
}
Person.prototype.getName = function() {
return name;
}
Person.prototype.setName = function(value) {
name = value;
}
})()
var person1 = new Person("Bert");
alert(person1.getName()); // "Bert"
person1.setName("Greg");
alert(person1.getName()); // "Greg"
var person2 = new Person("Michael");
alert(person2.getName()); // "Michael"
person1.setName("Greg");
alert(person2.getName()); // "Michael"
위의 Person 구조 함수는 getName () 과 setName () 방법과 마찬가지로 개인 변수name에 접근할 수 있습니다.이런 모드에서 변수name는 정적이고 모든 실례가 공유하는 속성이 됩니다.
즉, 하나의 실례에서 setName () 을 사용하면 모든 실례를 기억할 수 있습니다.setName () 을 호출하거나 새 Person 실례를 만들면name 속성에 새 값을 부여합니다.
결과는 모든 실례가 같은 값을 되돌려 주는 것이다.
이런 방법으로 정적 사유 변수를 만드는 것은 원형을 사용하기 때문에 코드 복용을 증진시킬 수 있지만, 모든 실례는 자신의 사유 변수가 없을 것이다.
실례 변수를 사용할지, 정적 사유 변수를 사용할지는 결국 구체적인 수요에 따라 결정된다.
다중 검색 작용역 중의 한 차원은 어느 정도에 검색 속도에 영향을 줄 수 있다.이것이 바로 폐쇄와 개인 변수를 사용하는 뚜렷한 부족한 점이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.