JS---类的继承

 1     function BaseClass() {
 2       //父类对象showMsg方法
 3       this.showMsg=function(){
 4         alert("BaseClass::showMsg");
 5       }
 6       //父类对象的baseShowMsg方法
 7       this.baseShowMsg=function(){
 8         alert("BaseClass::baseShowMsg");
 9       }
10     }
11     //父类的showMsg方法
12     BaseClass.showMsg=function(){
13         alert("BaseClass::showMsg static");
14     }
15
16     function ExtendClass() {
17       //子类对象的showMsg方法
18       this.showMsg=function(){
19         alert("ExtendClass::showMsg");
20       }
21     }
22     //子类的showMsg方法
23     ExtendClass.showMsg=function(){
24         alert("ExtendClass::showMsg static");
25     }
26
27     //测试
28     ExtendClass.prototype=new BaseClass();//子类的原型指向父类的一个实例
29     var instance1=new ExtendClass();//子类的一个实例instance1
30     instance1.showMsg();//如果子类对象有showMsg方法就调用之,没有就去原型链上查找有无此方法。
31     instance1.baseShowMsg();//当前对象没有此方法,所以去原型链上找,找到调用
32     ExtendClass.showMsg.call(instance1);//子类的对象去调用子类的方法
33     ExtendClass.showMsg();//调用类的方法,应该用类去调用而不能用该类的实例去调用
34     BaseClass.showMsg.call(instance1);//子类对象调用父类的showMsg方法
35     var baseInstance1=new BaseClass();
36     baseInstance1.showMsg.call(instance1);//子类对象调用父类对象的方法
 1 function Animal () {
 2       this.name="an animal";
 3       this.age=3;
 4       this.say=function() {
 5         alert(this.name+‘ say:I am an animal,‘+this.age+‘ years old.‘);
 6       }
 7     }
 8     function Dog () {
 9       this.name=‘a dog‘;
10       this.say=function  () {
11         alert(this.name+‘ say:I am a dog,‘+this.age+‘ years old.‘);
12       }
13       this.keepGete=function() {
14       alert(this.name+‘ is keeping Gate!‘);
15       }
16     }
17     function Cat () {
18       this.name=‘a cat‘
19       this.catchMouse=function() {
20       alert(this.name+‘ is catching mouse!‘)
21     }
22     }
23     //Animal的原型上增加run方法,所有继承Animal类的子类都可以调用
24     Animal.prototype.run = function() {
25       alert(this.name+‘ is running!‘)
26     };
27
28     animal=new Animal();
29     animal.say();
30     animal.run();
31
32     Cat.prototype=new Animal();
33     cat=new Cat();
34     cat.say();
35     cat.run();
36     cat.catchMouse();
37
38     Dog.prototype=new Animal();
39     dog=new Dog();
40     dog.say();
41     dog.run();
42     dog.keepGete();
时间: 2024-08-07 22:50:16

JS---类的继承的相关文章

js类(继承)(二)

1. 定义js类js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 代码如下: function ShapeBase() { this.show = function() { alert("ShapeBase show"); }; this.init = function(){ alert("ShapeBase init");

精读JavaScript模式(八),JS类式继承

一.前言 这篇开始主要介绍代码复用模式(原书中的第六章),任何一位有理想的开发者都不愿意将同样的逻辑代码重写多次,复用也是提升自己开发能力中重要的一环,所以本篇也将从“继承”开始,聊聊开发中的各种代码复用模式. 其实在上一章,我感觉这本书后面很多东西是我不太理解的,但我还是想坚持读完,在以后知识逐渐积累,我会回头来完善这些概念,算是给以前的自己答疑解惑. 二.类式继承VS现代继承模式 1.什么是类式继承 谈到类式继承或者类classical,大家都有所耳闻,例如在java中,每个对象都是一个指定

js类(继承)(一)

//call() //调用一个对象的一个方法,以另一个对象替换当前对象. //call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) //参数 //thisObj //可选项.将被用作当前对象的对象. //arg1, arg2, , argN //可选项.将被传递方法参数序列. //说明 //call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. //如果没有提供 thisO

JS 类和继承

function User(name, pass) { this.name = name this.pass = pass } User.prototype.showName = function () { console.log(this.name) } User.prototype.showPass = function () { console.log(this.pass) } function VipUser(name, pass, level){ User.call(this, nam

js原生设计模式——2面向对象编程之继承—new类式继承

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>classInherit</title>    <script type="text/javascript">    //声明父类    function superClass(){        this.name

JS原型继承与类的继承

我们先看JS类的继承 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>JS类的继承</title> 7 </head> 8 9 <body> 10 /* -- 类式继承 -- */ 11 <script type="text/javascript"> 12 //先声

JS原型继承和类式继承

类式继承(构造函数) JS中其实是没有类的概念的,所谓的类也是模拟出来的.特别是当我们是用new 关键字的时候,就使得"类"的概念就越像其他语言中的类了.类式继承是在函数对象内调用父类的构造函数,使得自身获得父类的方法和属性.call和apply方法为类式继承提供了支持.通过改变this的作用环境,使得子类本身具有父类的各种属性. JavaScript var father = function() { this.age = 52; this.say = function() { al

JS面向对象组件 -- 继承的其他方式(类式继承、原型继承)

继承的其他形式: •类式继承:利用构造函数(类)继承的方式 •原型继承:借助原型来实现对象继承对象 类 : JS是没有类的概念的 , 把JS中的构造函数看做的类 要做属性和方法继承的时候,要分开继承. function Aaa(){ //父类 this.name = "小明"; } Aaa.prototype.showName = function(){ alert( this.name ); }; function Bbb(){ //子类 } Bbb.prototype = new

js模块,类,继承,命名空间,私有属性等相关概念梳理

js确切的说是一种基于对象的语言,和纯面向对象的语言(比如as)稍微有点区别,js中没有类的概念.虽然有继承但是基于原型的继承.随着前段越来越受重视,jser们利用js的一些特性他们制造出了和纯面向对象一样好玩的东西.下面就js中一些概念进行概述,很多东西都是来自博客园的一些大牛,我写这篇文章主要想拿as和js做对比来讲,以方便as像转js的程序员们.本片文章涉及的概念有,模块,类,继承,私有属性和公开属性. 1.模块大家写as的时候都知道,as里面是有类的概念,每次生成一个类,系统中都会多一个

js中,类的继承

创建类:class student{    constructor(name,age){        this.name=name;        this.age=age;    }    learn(){        console.log('我是学生');    }}类的继承:class child extends Student{    constructor(name,age){        super (name,age);    }    coolings(){