자바스크립트 클래스 상속
저자:Eve Cole
업데이트 시간:2009-06-11 16:23:07
1. 첫 번째 방법은 객체인 것처럼 가장하는 것입니다. (js의 모든 메소드 이름을 사용하여 Function 객체입니다.) Java 코드 function Parent(username){
this.username = 사용자 이름;
this.say = 함수(){
경고(this.username);
}
}
function Child(사용자 이름, 비밀번호){
this.temp = Parent;//temp는 Parent가 가리키는 곳을 가리킵니다. js의 각 메소드 이름은 메소드를 가리키는 Function 객체입니다.
this.temp(username);//초기화 메소드의 내용 delete this.temp;//temp는 더 이상 유용하지 않습니다. 직접 삭제할 수 있습니다. //Parent(username);//이런 방식으로 쓰는 것은 표면적으로는 올바른 것처럼 보이지만 실제로는 잘못된 것입니다. new에서 나오는 객체만 이것을 갖고 있기 때문에 Parent에서 이것을 호출할 때 값이 없습니다. this.password =password;
this.hello = 함수(){
경고(this.password);
}
}
var parent = new Parent("장산");
parent.say();//장산
var child = new Child("lisi","123456");
child.say();//lisi
child.hello();//123456
//첫 번째 방법은 객체인 것처럼 가장하는 것입니다. (js의 모든 메소드 이름을 사용하여 Function 객체입니다.)
함수 상위(사용자 이름){
this.username = 사용자 이름;
this.say = 함수(){
경고(this.username);
}
}
function Child(사용자 이름, 비밀번호){
this.temp = Parent;//temp는 Parent가 가리키는 곳을 가리킵니다. js의 각 메소드 이름은 메소드를 가리키는 Function 객체입니다.
this.temp(username);//초기화 메소드의 내용 delete this.temp;//temp는 더 이상 유용하지 않습니다. 직접 삭제할 수 있습니다. //Parent(username);//이런 방식으로 쓰는 것은 표면적으로는 올바른 것처럼 보이지만 실제로는 잘못된 것입니다. new에서 나오는 객체만 이것을 갖고 있기 때문에 Parent에서 이것을 호출할 때 값이 없습니다. this.password =password;
this.hello = 함수(){
경고(this.password);
}
}
var parent = new Parent("장산");
parent.say();//장산
var child = new Child("lisi","123456");
child.say();//lisi
child.hello();//123456
2. 두 번째 메소드: call() 함수 메소드 call() 함수는 Function 객체의 함수이며 구체적인 사용법은 다음과 같습니다. Java 코드 // call() 함수는 Function 객체의 함수입니다. // 사용법은 function test(str){
경고(this.username + "," + str);
}
var o = 새로운 객체();
o.username = "장산";
test.call(o,"123456");//zhangsan,123456. 각 Function 객체에는 call() 메서드가 있고 함수 이름은 Function 객체이기 때문에 call() 함수의 첫 번째 매개변수는 테스트 함수입니다. 이 인.
//call() 함수는 Function 객체의 함수입니다. //구체적인 사용법은 function test(str){
경고(this.username + "," + str);
}
var o = 새로운 객체();
o.username = "장산";
test.call(o,"123456");//zhangsan,123456. 각 Function 객체에는 call() 메서드가 있고 함수 이름은 Function 객체이기 때문에 call() 함수의 첫 번째 매개변수는 테스트 함수입니다. 이 인.
Java 코드 함수 Parent(사용자 이름){
this.username = 사용자 이름;
this.say = 함수(){
경고(this.username);
}
}
function Child(사용자 이름, 비밀번호){
Parent.call(this,사용자 이름);
this.password = 비밀번호;
this.hello = 함수(){
경고(this.password);
}
}
var parent = new Parent("장산");
parent.say();//장산
var child = new Child("lisi","123456");
child.say();//lisi
child.hello();//123456
함수 상위(사용자 이름){
this.username = 사용자 이름;
this.say = 함수(){
경고(this.username);
}
}
function Child(사용자 이름, 비밀번호){
Parent.call(this,사용자 이름);
this.password = 비밀번호;
this.hello = 함수(){
경고(this.password);
}
}
var parent = new Parent("장산");
parent.say();//장산
var child = new Child("lisi","123456");
child.say();//lisi
child.hello();//123456
3. 세 번째 구현 방법: apply() 함수 메서드 apply()와 call()은 매개변수가 다르게 전달된다는 점만 제외하면 동일합니다. Apply의 매개변수는 배열 Java 코드입니다. // 세 번째 구현 방법: apply() 함수 메소드, apply() 및 call()은 매개변수가 다르게 전달된다는 점을 제외하면 동일합니다. // 따라서 상속은 다음과 같이 function Parent(username){을 구현할 수 있습니다.
this.username = 사용자 이름;
this.say = 함수(){
경고(this.username);
}
}
function Child(사용자 이름, 비밀번호){
Parent.apply(this,new Array(사용자 이름));
this.password = 비밀번호;
this.hello = 함수(){
경고(this.password);
}
}
var parent = new Parent("장산");
parent.say();//장산
var child = new Child("lisi","123456");
child.say();//lisi
child.hello();//123456