첫 번째 단계:
함수 A(){
this.funB = function(){
alert('A:funB');
}
}
A.prototype = {
funA:function(){
Alert('A:funA');
}
};
function B(){
}
function extend(sub,parent){
sub.prototype = 새로운 부모();
sub.prototype.constructor = sub;
}
extend(B,A)
var b = new B(); // out 'A:funA'
b.funB(); // out 'A:funB'
alert(b instanceof A); // out "true"
instanceof를 사용하여 감지하는 것도 사실입니다. 인스턴스가 true가 되려면 두 클래스의 프로토타입 객체가 간접적이든 직접적이든 동일한 객체여야 합니다.
이 접근 방식에 문제가 있나요? 일반적인 객체 지향 언어에서는 하위 클래스가 상위 클래스를 상속할 때 상위 클래스 생성자의 실행이 트리거되지 않지만 여기서는 상속 시 상위 클래스가 실행됩니다.
두 번째 단계
this.Astr = 'hello A';
}
A.prototype = {
funA:function(){
alert(this.Astr)
}
};
함수 B(){
arguments.callee.superclass &&args.callee.superclass.apply(this,arguments)
this.Bstr = 'hello B';
B.prototype = {
funB:function(){
alert(this.Bstr)
}
}
function C(){
arguments.callee .superclass && 인수.callee.superclass.apply(this,arguments);
alert(this.Astr)
alert(this.Bstr)
}
function extend(sub,parent) {
var subproto = sub.prototype;
sub.prototype = parent.prototype;
typeof subproto != 'object' && (subproto = {}); object' && (sub.prototype = {});
for(var i in subproto){
sub.prototype[i] = subproto[i]
sub.superclass = parent ;
}
//B는 A를 상속합니다
extend(B,A);
//C는 B를 상속합니다
extend(C,B)
var c = new C( ); // '안녕 A','안녕 B'
c.funA(); // '안녕 A'
c.funB() // '안녕 B'
경고 (c 인스턴스of A) // out true
alert(c instanceof B) // out true;
여기서 각 하위 클래스의 확장 메서드에 일부 변경이 적용되었습니다. 상위 클래스의 속성은 상속받은 상위 클래스를 참조하는 데 사용됩니다. 빈 함수 proto는 상위 클래스의 프로토타입을 가져오고 하위 클래스의 프로토타입으로 인스턴스화되므로 상위 클래스 생성자가 실행되지 않습니다.
대신 하위 클래스 생성자의 코드를 사용하여 상위 클래스의 합의된 생성자를 실행하세요.
코드 복사
위 코드에 대한 상속을 작성하는 더 편리한 방법이 있나요? 함수의 프로토타입을 수정하고 다음을 확인하세요.
코드 복사
for(var i in subproto)
this.prototo[i];
this.superclass = parent
return this
}
function A(){
.Astr = '안녕 A';
A.prototype = {
funA:function(){
alert(this.Astr)
}
}; >var B = function (){
arguments.callee.superclass &&args.callee.superclass.apply(this,arguments)
this.Bstr = 'hello B'
}
B; .prototype = {
funB:function(){
alert(this.Astr)
}
}
B.extend(A)
var C = function( ){
인수.callee.superclass && 인수.callee.superclass.apply(this,arguments)
alert(this.Astr)
alert(this.Bstr)
}.extend (B);
var c = new C(); // '안녕 A','안녕 B'
c.funA() //'안녕 A'
c.funB( ); // '안녕하세요 B'
alert(c 인스턴스 오브 A) // 아웃 true
alert(c 인스턴스of B) // 아웃
여기에서 확장하는 작업은 다음과 같습니다. subproto는 하위 클래스의 원래 프로토타입을 참조하고 하위 클래스의 프로토타입을 상위 클래스의 프로토타입 객체에 지정하여 상위 클래스를 상속합니다(이의 목적은 인스턴스를 만드는 것입니다). 하위 클래스의 상위 클래스는 true). 그런 다음 하위 프로토타입을 탐색하고 원래 프로토타입의 멤버를 현재 프로토타입에 추가하여 동일한 이름을 가진 하위 클래스의 멤버가 상위 클래스의 멤버를 덮어쓰도록 합니다. 마지막으로 하위 클래스의 속성 슈퍼클래스를 상위 클래스로 지정합니다.
js 상속의 핵심은 프로토타입 체인의 고유성을 유지하는 것입니다. 인스턴스의 __proto__가 상위 클래스의 프로토타입과 동일한지 여부를 결정합니다.
저자 cnblogs OD.

解决PHP报错:继承父类时遇到的问题在PHP中,继承是一种重要的面向对象编程的特性。通过继承,我们能够重用已有的代码,并且能够在不修改原有代码的情况下,对其进行扩展和改进。尽管继承在开发中应用广泛,但有时候在继承父类时可能会遇到一些报错问题,本文将围绕解决继承父类时遇到的常见问题进行讨论,并提供相应的代码示例。问题一:未找到父类在继承父类的过程中,如果系统无

继承是一个概念,它允许我们从一个类访问另一个类的属性和行为。被继承方法和成员变量的类被称为超类或父类,而继承这些方法和成员变量的类被称为子类或子类。在Java中,我们使用“extends”关键字来继承一个类。在本文中,我们将讨论使用继承来计算定期存款和定期存款的利息的Java程序。首先,在您的本地机器IDE中创建这四个Java文件-Acnt.java−这个文件将包含一个抽象类‘Acnt’,用于存储账户详情,如利率和金额。它还将具有一个带有参数‘amnt’的抽象方法‘calcIntrst’,用于计

如何在PHP中使用多态和继承来处理数据类型引言:在PHP中,多态和继承是两个重要的面向对象编程(OOP)概念。通过使用多态和继承,我们可以更加灵活地处理不同的数据类型。本文将介绍如何在PHP中使用多态和继承来处理数据类型,并通过代码示例展示它们的实际应用。一、继承的基本概念继承是面向对象编程中的一种重要概念,它允许我们创建一个类,该类可以继承父类的属性和方法

PHP中的封装技术及应用封装是面向对象编程中的一个重要概念,它指的是将数据和对数据的操作封装在一起,以便提供对外部程序的统一访问接口。在PHP中,封装可以通过访问控制修饰符和类的定义来实现。本文将介绍PHP中的封装技术及其应用场景,并提供一些具体的代码示例。一、封装的访问控制修饰符在PHP中,封装主要通过访问控制修饰符来实现。PHP提供了三个访问控制修饰符,

如何使用Java强制继承代理final类?在Java中,final关键字用于修饰类、方法和变量,表示它们不可被继承、重写和修改。然而,在某些情况下,我们可能需要强制继承一个final类,以实现特定的需求。本文将讨论如何使用代理模式来实现这样的功能。代理模式是一种结构型设计模式,它允许我们创建一个中间对象(代理对象),该对象可以控制对另一个对象(被代理对象)的

继承:继承是面向对象编程(OOP)中的一个基本概念,它允许类从其他类继承属性和行为。它是一种基于现有类创建新类的机制,促进代码重用并建立类之间的层次关系。继承基于"父子"或"超类-子类"关系的概念。从中继承的类被称为超类或基类,而继承超类的类被称为子类或派生类。子类继承其超类的所有属性(变量)和方法(函数),还可以添加自己独特的属性和方法或覆盖继承的属性和方法继承的类型在面向对象编程(OOP)中,继承是一个基本概念,它允许类从其他类中继承属性和行为。它促进

如何在Go语言中实现封装和继承封装和继承是面向对象编程中的两个重要概念,它们可以使代码更加模块化和可维护,同时也为代码的复用提供了便利。本文将介绍在Go语言中如何实现封装和继承,并提供相应的代码示例。封装封装是将数据和功能进行封装,隐藏实现的细节,只暴露必要的接口给外部使用。在Go语言中,封装是通过导出和非导出标识符来实现的。首字母大写的标识符可以被其他包访

PHP是一种服务器端编程语言,自PHP5之后开始支持面向对象编程(OOP)。OOP的核心思想是将数据和行为封装在对象中,以提高程序的可维护性和可扩展性。在PHP中,面向对象编程具有三大特性:继承、多态与接口。一、继承继承是指一个类可以从另一个类中继承属性和方法。被继承的类称为父类或基类,继承的类称为子类或派生类。子类可以通过继承获得父类中的属性和方法,并且可


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
