>  기사  >  웹 프론트엔드  >  JavaScript (2)_javascript 기술에서 개인 속성을 구현하는 방법

JavaScript (2)_javascript 기술에서 개인 속성을 구현하는 방법

WBOY
WBOY원래의
2016-05-16 17:11:051030검색

이전 글에서는 $class라는 도구 함수를 작성했는데, 이번 글에서는 다음과 같이 개선해 보겠습니다. 다음 기능 구현

1, 상속

2. 하위 클래스가 상위 클래스를 상속하는 경우 상위 클래스의 비공개 속성을 상속하지 않습니다.

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

/**
 * @param {String} className
 * @param {String/Function} superCls
 * @param {Function} classImp
 */
function $class(className, superCls, classImp){
if(superCls === '') superCls = 개체;
함수 claz(){
                                                                  = new superCls(); var _super = superCls.prototype;
window[className] = clazz
classImp.apply(p, [_super])
}


부모 클래스를 먼저 작성



코드 복사
코드는 다음과 같습니다./** * 부모 클래스 인물 */
$class('Person','',function(){
// 사유 재산 연령
var age;
this.init = function(n, a){
                                                                                              return this.name
}
this.setName = function(name){
this.name = name;
}
this.getAge = function(){
return age;
}
this.setAge = function(a){
age = a; };
});


Person




코드 복사


에서 상속되는 하위 클래스 작성 코드는 다음과 같습니다:

$class("Man",Person, function(supr){
var school;
this.init = function(n, a, s) {
supr.init.apply(this, [n,a]); school = s } this.getSchool = function(){ 학교 복귀; }; this.setSchool = function(s){ school = s;
}
})


새 하위 클래스




코드 복사


코드는 다음과 같습니다.


var m = new Man('tom', 25, 'pku ');
console.log(m.name); // tom은 상위 클래스의 공통 속성 이름을 상속받을 수 있습니다. 도트 연산자를 사용하여
console.log(m.age); // 정의되지 않음 상위 클래스의 비공개 속성 age는
console.log(m.getAge());를 가져오는 데 직접 사용할 수 없습니다. // 25 비공개 속성 age는 상위 클래스의 공개 메소드 getAge
console을 통해 얻을 수 있습니다. log(m.school); // 정의되지 않음 Man 자신의 개인 속성은 여전히 ​​도트 연산자를 통해 얻을 수 없습니다 console.log(m.getSchool) ()) // pku는 개인 속성 school을 얻습니다 getSchool() 메소드를 통해
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.