>  기사  >  웹 프론트엔드  >  JavaScript에서 비공개 속성을 사용하여 클래스를 작성하는 방법 (1)_javascript 기술

JavaScript에서 비공개 속성을 사용하여 클래스를 작성하는 방법 (1)_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:10:50963검색

이전에 JavaScript로 클래스를 작성하는 방법에 대해 논의한 적이 있습니다. 그러나 민간 구현은 논의되지 않습니다. 이 기사를 읽어보세요.

JS의 사유 속성 구현 핵심은 var 클로저라는 것을 알고 있습니다. 다음과 같습니다

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

function Person(n, a ){
// 공개
this.name = n
// 비공개
var age = a
this.getName = function(){
return this.name;
}
this.getAge = function(){
return age;
}
}

테스트는 다음과 같습니다. 나이는 비공개이므로 공개할 수 없습니다. 도트 연산자를 사용하여 얻어지며, getName 메소드만 사용할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var p = new Person('jack' ,23) ;
console.log(p.age); // 정의되지 않음
console.log(p.getAge()) // 23

이상할 점은 없습니다. 위의 내용을 아래에서 도구 기능을 사용하여 구현하겠습니다.
코드 복사 코드는 다음과 같습니다.

/**
 * @param {String} className
 * @param {Function} classImp
 */
function $class(className, classImp){
function clazz(){
if(typeof this.init == "function"){
this.init.apply(this, 인수); 🎜> }
}
classImp.call(clazz.prototype);
window[className] = clazz;
}

클래스 작성

코드 복사 코드는 다음과 같습니다.
$class('Person', function(){
// 비공개 속성은 여기에 정의됩니다
var age = '';
this.init = function(n, a){
// 모든 속성이 this에 걸려 초기화됩니다.
this.name = n;
// 개인 속성 초기화
age = a;
}
this.getName = function(){
return this.name; .getAge = function( ){
                                                  . >

코드는 다음과 같습니다.


var p = new Person('jack' ,23)
콘솔 .log(p.name); // Jack은 점 연산자를 사용하여 가져올 수 있습니다.
console.log(p.age); // 정의되지 않은 개인 정보는 점 연산자를 통해 얻을 수 없습니다.
console.log(p .getAge()); // 23 개인 연령은 일반적인 메소드 getAge를 통해서만
을 얻을 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.