1.利用原型对象实现继承
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
<!--
//每个函数对象都具有prototype属性,这个属性保存了函数对象的原型对象的引用.而函数对象的所有属性和方法都"继承自这个原型对象".同样,构造函数也具有prototype属性.
function Person(name,sex) {
this.name=name;
this.sex=sex;
}
Person.prototype.sayHello=function (){
document.write("大家好,我的名字是"+this.name+".<br>");
}
//定义Student类,构造函数为空
function Student(){
}
Student.prototype=new Person("张三","男");
var student=new Student();
Student.prototype.grade="三年级";
Student.prototype.introduce=function(){
document.write("我是"+this.grade+"的学生............");
}
student.sayHello();
student.introduce();
//删除对象的属性和方法有两种方式:1是delete person.speak; 2是person.name="underfined;"
//-->
</script>
</body>
\</html>
2.通过构造函数实现继承
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
<!--
//通过构造函数调用实现继承
//this关键字引用的是当前构造函数所创建的对象实例,当类B的构造函数作为类A的方法并在类A的构造函数中调用时,this引用的就是类A的构造函数所创建的实例,这样类A的实例就拥有了类B的属性和方法
function ClassA(name,age){
//将ClassB作为函数定义为ClassA的函数tempMthod
this.tempMethod=ClassB;
//调用tempMthod
this.tempMethod(name);
//删除tempMethod方法
delete this.tempMethod;
this.age=age;
this.sayHello=function(){
document.write("你好,我的名字叫"+this.name+",我今年"+this.age+"岁了!!!!<br>");
}
}
function ClassB(name){
this.name=name;
this.sayHello=function(){
document.write("我是不会告诉你我的名字叫"+this.name+"的!!!!!<br>");
}
}s
var classB =new ClassB("张三");
classB.sayHello();
var classA=new ClassA("李四",34);
classA.sayHello();
//删除对象的属性和方法有两种方式:1是delete person.speak; 2是person.name="underfined;"
//-->
</script>
</body>
</html>
3.使用call方法和apply方法实现继承
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
<!--
//使用call方法和apply方法实现继承
//这两个方法可以将函数绑定到其他对象上执行
//可以将类B的构造函数绑定到类A的对象实例上执行,达到类A继承类B的目的
function Animal(color,age){
this.color=color;
this.age=age;
this.cry=function(){
document.write("Hi,我是"+this.color+"色的. 我今年"+this.age+"岁了!!<br>");
}
}
function Dog(color ,age){
Animal.call(this,color,age);
//使用call方法将Animal函数绑定到Dog实例上执行
}
function Cat(color ,age){
Animal.apply(this,[color,age]);
//使用apply方法将Animal函数绑定到Cat实例上执行
}
var animal=new Animal("绿",33);
animal.cry();
var dog=new Dog("黑",11);
dog.cry();
var cat =new Cat("白",4);
cat.cry();
//-->
</script>
</body>
\</html>
分享到:
相关推荐
本篇文章将深入探讨JavaScript中实现继承的几种常见方式。 1. 原型链继承 JavaScript的原型(prototype)机制是实现继承的基础。每个函数都有一个prototype属性,这个属性指向一个对象,这个对象的属性和方法可以被...
原型链继承是 JavaScript 中实现继承的默认方式。如果要让子对象继承父对象,可以将子对象构造函数的 prototype 属性指向父对象的一个实例。例如: ``` function Parent() {} function Child() {} Child.prototype =...
### JavaScript继承的三种方法实例详解 #### 一、概述 在JavaScript中,虽然原生语言层面没有提供传统意义上的“类”这一概念,但它通过构造函数和原型链等机制实现了类的功能,尤其是继承这一核心概念。继承是...
### JavaScript中的几种继承方法示例 #### 一、原型链继承 **原理**: 在JavaScript中,原型链继承是一种实现继承的方式,它通过让子类的原型对象指向父类的一个实例来实现属性和方法的共享。 - **核心概念**: 每个...
在JavaScript中,对象可以通过原型链实现继承,这是JavaScript中实现面向对象编程的重要方式。本文将详细介绍JavaScript中的三种主要继承方法:原型链继承、构造函数继承以及组合继承。 1. **原型链继承**: - ...
在JavaScript中实现多继承可以通过多次调用`call`方法来完成,如下所示: ```javascript function Class10() { this.showSub = function(a, b) { alert(a - b); }; } function Class11() { this.showAdd = ...
JavaScript继承机制探讨及其应用 JavaScript是一门弱类型语言,具有函数式编程和面向对象编程的特点。随着近几年JavaScript生态圈的发展和成熟,项目的编码量和复杂度也在呈几何级数增长。JavaScript面向对象编程中...
在深入理解JavaScript继承之前,我们需要掌握几个核心概念:父类(也称作超类)是指被继承的类,子类是通过继承父类得到的类,抽象类通常不用于实例化,而是作为其他类继承的基础,基类是提供给其他类继承的类,派生...
在JavaScript的学习过程中,以下几个关键知识点是必不可少的: 1. **基础语法**:包括变量(var、let、const)、数据类型(字符串、数字、布尔值、null、undefined、对象、数组、Symbol等)、操作符(算术、比较、...
为了提升代码质量,作者在教程中也涉及了以下几个方面: - 调试技巧,特别是在Chrome浏览器中的调试方法。 - 编码风格和注释的规范。 - 避免使用"忍者代码"(即晦涩难懂的代码)。 - 自动化测试的介绍,包括使用...
在JavaScript的学习和面试准备中,有几个关键知识点是必须掌握的: 1. **基础语法**:理解变量声明(var、let、const)、数据类型(原始类型与引用类型)、操作符(算术、比较、逻辑)、流程控制(条件语句、循环...
在JavaScript中实现面向对象特性时,需要注意以下几点: 1. 使用构造函数和原型来创建和扩展类。 2. 通过闭包实现封装,保护内部状态。 3. 利用原型链实现继承,共享方法和属性。 4. 虽然JavaScript没有原生接口,但...
### JavaScript中的六种继承方式详解 #### 一、引言 ...以上是JavaScript中实现继承的几种主要方式,每种方式都有其特点和适用场景。开发者可以根据具体需求选择合适的继承方案来提高代码质量和可维护性。
下面通过两个具体的示例来说明如何在JavaScript中实现观察者模式。 **示例1:** 在这个例子中,我们创建了一个简单的弹出窗口(子窗口),该窗口可以从打开它的父窗口接收数据,并在用户选择某些项后将结果返回给...
Crockford在书中强调了JavaScript的以下几个关键知识点: 1. **变量和作用域**:JavaScript采用函数作用域,意味着变量的作用范围限制在定义它们的函数内。全局变量在整个脚本中都是可见的,而局部变量只在函数内部...
JavaScript中的继承机制是面向对象编程的关键部分,它允许创建基于现有对象的新对象,同时保留原有的属性和方法。这里我们将深入探讨几种主要的继承方式:原型式继承、寄生式继承和寄生组合式继承。 ### 原型式继承...
手册可能包含了以下几个主要部分: 1. **基础概念**:讲解JavaScript的基础语法,包括变量、数据类型(如字符串、数字、布尔、null、undefined、对象、数组等)、操作符(赋值、比较、逻辑、位运算等)、流程控制...
在JavaScript中,没有像其他面向对象语言那样的`extend`方法来实现继承。我们可以利用构造函数和原型来模拟继承。下面我们将通过几个步骤来创建一个简单的继承示例。 1. 定义基类(Person): ```javascript ...
在深入理解JavaScript对象之前,我们需要先了解几个基本概念:变量、数据类型、函数以及原型。 1. 变量与数据类型: 在JavaScript中,变量可以用来存储各种数据,包括基本类型(如数字、字符串、布尔值、null和...
以上就是JavaScript中几种常见的继承方式,每种方式都有其适用场景和局限性。在实际开发中,根据具体需求选择合适的继承方式是非常重要的。例如,在需要传递初始化参数时,可以考虑使用构造函数继承或组合继承;而在...