JavaScript는 클로저를 사용하여 object_javascript 팁의 개인 속성을 시뮬레이션합니다.

WBOY
풀어 주다: 2016-05-16 17:57:51
원래의
1218명이 탐색했습니다.

JavaScript에는 블록 수준 범위가 없고 전용 수정자가 없지만 함수 범위는 있습니다. 범위의 이점은 내부 함수가 외부 함수의 매개변수 및 변수에 액세스할 수 있다는 것입니다(this 및 인수는 제외. 내부 함수에서 이것은 전역 객체를 가리키고 인수는 내부 함수의 함수 매개변수를 가리킵니다). 이 속성을 사용하여 객체 지향의 개인 속성을 시뮬레이션할 수 있습니다.

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

var myObject=function(value ){
var value=value || 0;
increment:function(num){
value =typeof num==='number' ? ,
setValue:function(num){
value = typeof num==='number' ? num : value
},
getValue:function(){
반환값; 🎜>}
}
}(10)
//alert(myObject.getValue()) //10
myObject.setValue(20)
//alert(myObject. getValue() ); //20
myObject.increment(5);
alert(myObject.getValue()); //25


위의 예와 같이 myObject는 익명 함수 개체 실행 후 반환됩니다. 익명 함수의 변수 값은 익명 함수 외부에서는 액세스할 수 없지만 내부 함수에서는 액세스할 수 있습니다. 익명 함수의 실행은 반환된 myObject 개체에서 계속 액세스되므로 값은 입니다. 그것에 의해 점유된 기억은 파괴되지 않습니다. 이때 내부변수 값은 myObject 객체의 private 변수와 동일하다.


코드 복사 코드는 다음과 같습니다. var myObject=function(value){
var name='MyObject';
return{
increment:function(num){
value =typeof num==='number' ? num : 0; setValue:function (num){
value = typeof num==='number' ? num : value
},
getValue:function(){
//alert(this); 🎜>반환 값;
},
getName:function(){
반환 이름
},
setName:function(nameStr){
name=nameStr; },
toString:function(){
return '[객체:' 이름 ']'
}
}
}
var obj=myObject(5); >obj.increment(6);
//alert(obj.getValue()); // 11
//alert(obj) //[Object:MyObject]
obj.setName(' 임시 객체 01 ');
alert(obj) //[객체:임시 객체 01]

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