JavaScript 클로즈업 인스턴스 설명
우선, 우리는 간단한 대상을 구성한다.
var testObj = {
value: 10,
add: function(inc){
this.value += (typeof inc === "number") ? inc : 1;
}
};
testObj.add();
testObj.value; // 11
testObj.add(2);
testObj.value; // 13
이렇게 쓰면 문제가 하나 있다.value값은 불법으로 수정되지 않을 것을 보장할 수 없으며 다음과 같은 방법으로 수정할 수 있다.
var testObj = (function(){
var value = 10;
return {
add: function(inc){
value += (typeof inc === "number") ? inc : 1;
},
getValue: function(){
return value;
}
};
})();
testObj.add();
testObj.getValue(); // 11
testObj.add(2);
testObj.getValue(); // 13
테스트 Obj를 초기화하는 함수 형식을 공통적으로 호출할 수 있습니다. 이 함수는 대상의 글씨체를 되돌려줍니다. 함수에value 변수가 정의되어 있습니다. 이 변수는dd와 getValue 방법에 항상 사용할 수 있지만, 함수의 작용역은 다른 프로그램에 보이지 않습니다.또한 내부 함수는 외부 함수보다 더 긴 생명 주기를 가지고 있다는 결론도 얻을 수 있다.
우리는 구조 함수 호출의 예를 계속 보았다.
var MyObj = function(str){
this.status = str;
};
MyObj.prototype.getStatus = function(){
return this.status;
};
var obj = new MyObj("javascript");
obj.getStatus(); // "javascript"
이렇게 쓰는 것은 틀리지 않았지만 약간의'괜한 짓'이 있을 것이다. 왜 get Status 방법으로 직접 접근할 수 있는 속성에 접근해야 합니까?만약 status가 사유 속성이라면, 당연히 의미가 있다.
var obj = function(status){
return {
getStatus: function(){
return status;
}
};
};
var myObj = obj("javascript");
myObj.getStatus(); // "javascript"
여기에서 obj를 호출할 때 getStatus 방법을 포함하는 새로운 대상을 되돌려줍니다. 이 대상의 인용은 myObj에 저장됩니다. obj가 되돌아왔음에도 불구하고 getStatus 방법은 obj 대상의status 속성에 접근하는 특권을 가집니다.getStatus 방법은 이 매개 변수의 복사본에 접근하는 것이 아니라 매개 변수 자체에 접근합니다.이 함수는 창설될 때 상하문 환경에 접근할 수 있기 때문에 폐쇄라고 부른다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.