javascript 특징의: 계승
9254 단어 JS
1. 대상 사칭
<html>
<head>
<script type="text/javascript">
//
function Stu(name, age){
this.name = name;
this.age = age;
this.show = function(){
window.alert(this.name + " " + this.age);
}
}
//
function MidStu(name, age) {
this.stu = Stu;
//
// , js , MidStu Stu
this.stu(name, age);
//
this.show_mid = function(){
window.alert(" " + this.name);
}
//
this.payFee = function(){
window.alert(" " + money * 0.8);
}
}
//
function Pupil(name, age) {
this.stu = Stu;
//
this.stu(name, age);
//
this.payFee = function(){
window.alert(" " + money * 0.5);
}
}
//
var midStu = new MidStu("zs", 13);
midStu.show(); //zs 13
midStu.show_mid(); // zs
var pupil = new Pupil("ls", 10); //ls 10
pupil.show();
script>
head>
<body>
body>
html>
둘째, call 또는 apply 를 통 해 첫 번 째 방법 을 실현 하 는 것 도 가장 간단 한 방법 입 니 다. call 또는 apply 방법 을 사용 하여 부모 대상 의 구조 함 수 를 하위 대상 에 연결 합 니 다. 즉, 하위 대상 구조 함수 에 한 줄 을 추가 합 니 다.
function Animal(){
this.species = " ";
}
function Cat(name,color){
Animal.apply(this, arguments);
this.name = name;
this.color = color;
}
3. prototype 모드
'고양이' 의 prototype 대상 이 하나의 Animal 인 스 턴 스 를 가리 키 면 모든 '고양이' 의 인 스 턴 스 는 Animal 을 계승 할 수 있 습 니 다.
Cat.prototype = new Animal(); // , Cat prototype Animal 。
Cat.prototype.constructor = Cat;
// , prototype constructor , 。 "Cat.prototype = new Animal();" ,Cat.prototype.constructor Cat ; ,Cat.prototype.constructor Animal。
var cat1 = new Cat(" "," ");
alert(cat1.species); //
Animal 대상 에서 변 하지 않 는 속성 은 Animal. prototype 에 직접 기록 할 수 있 습 니 다.그래서 우 리 는 Cat () 이 Animal () 을 뛰 어 넘 고 Animal. prototype 을 직접 계승 할 수 있다.이제 우 리 는 먼저 Animal 대상 을 고 쳐 씁 니 다.
function Animal(){ }
Animal.prototype.species = " ";
, Cat prototype , Animal prototype , 。
Cat.prototype = Animal.prototype;
Cat.prototype.constructor = Cat;
var cat1 = new Cat(" "," ");
alert(cat1.species); //
이전 방법 에 비해 이렇게 하 는 장점 은 효율 이 비교적 높다 는 것 이다.단점 은 Cat. prototype 과 Animal. prototype 이 현재 같은 대상 을 가리 키 고 있다 는 것 이다. 그러면 Cat. prototype 에 대한 수정 은 Animal. prototype 에 반 영 될 것 이다.
4. 빈 대상 을 중개 로 하 는 것 은 'prototype 을 직접 계승 하 는 것' 이 상기 한 단점 이 있 기 때문에 네 번 째 방법 으로 빈 대상 을 중개 로 한다.
var F = function(){};
F.prototype = Animal.prototype;
Cat.prototype = new F();
Cat.prototype.constructor = Cat;
면 은 prototype 대상 을 사용 하여 계승 을 실현 합 니 다.우리 도 하나의 사고방식 을 바 꾸 어 순 전 히 '복사' 방법 으로 계승 을 실현 할 수 있다.쉽게 말 하면 부모 대상 의 모든 속성 과 방법 을 하위 대상 에 복사 하면 계승 이 가능 하지 않 습 니까?이렇게 해서 우 리 는 다섯 번 째 방법 이 생 겼 다.우선, Animal 의 모든 변 하지 않 는 속성 을 prototype 대상 에 올 려 놓 습 니 다.
function Animal(){}
Animal.prototype.species = " ";
, , 。
function extend2(Child, Parent) {
var p = Parent.prototype;
var c = Child.prototype;
for (var i in p) {
c[i] = p[i];
}
c.uber = p;
}
이 함수 의 역할 은 부모 대상 의 prototype 대상 의 속성 을 Child 대상 의 prototype 대상 에 일일이 복사 하 는 것 입 니 다.사용 할 때 이렇게 쓰 세 요:
extend2(Cat, Animal);
var cat1 = new Cat(" "," ");
alert(cat1.species); //
거울 점
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.