博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS原型链继承
阅读量:5994 次
发布时间:2019-06-20

本文共 2270 字,大约阅读时间需要 7 分钟。

继承普通版

继承逻辑上都差不多,普通版调用方式比较繁琐,不利于反复大量的使用;

(function (){    //创建一个人员类    function Person(name){        this.name = name;   }    //创建教师类    function Teacher(name,books){        //call方法可以将一个函数的对象上下文从初始化变成由this来决定;        //调用person的构造函数,因为person没用new,所以他是个空对象;        //相当于Java中的super函数;        Person.call(this,name);        this.books = books;   }    //使老师类继承人员类;    Teacher.prototype = new Person();    Teacher.prototype.constructor = Teacher;    Teacher.prototype.getBook = function(){            return this.name + ' ' + this.books;       }    //测试    var victor = new Teacher('victor','chinese');    alert(victor.getBook());})()

继承升级版

(function (){            //创建一个人员类            function Person(name){                this.name = name;            }            //创建教师类            function Teacher(name,books){                //call方法可以将一个函数的对象上下文从初始化变成由this来决定;                //调用person的构造函数,因为person没用new,所以他是个空对象;                //相当于Java中的super函数;                Person.call(this,name);                this.books = books;            }            /*创建Extend函数是为了程序中所有的继承操作*/            function extend(subClass,superClass){                //1.让子类的原型类属性等于父类的原型属性                //初始化一个中间空对象,为了转换主父类关系                var F = function(){};                F.prototype = superClass.prototype;                //2.让子类继承F;                subClass.prototype = new F();                subClass.prototype.constructor = subClass;                //3.为子类增加属性superClass                subClass.superClass = superClass.prototype;                //4.增加一个保险,就算是原型类的超类(object)那么也要把你的构造函数级别降下来                if ( superClass.prototype.constructor == Object.prototype.constructor ) {//Object为超类,首字母需要大写                    superClass.prototype.constructor = superClass;                }            }            //测试            function Author(name,books){                Author.superClass.constructor.call(this,name);                this.books = books;                this.getBook = function(){                    return this.name + ',' + this.books;                }            }            //继承            extend(Author,Person);            var victor = new Author('victor','javascript');            alert(victor.getBook());    })()

转载于:https://www.cnblogs.com/victor5230/p/6588591.html

你可能感兴趣的文章
TCP: time wait bucket table overflow
查看>>
查看及设定IIS内置IWAM_和IUSR_用户的密码
查看>>
如何在命令行下使用Android NDK交叉编译工具
查看>>
SpringMVC通过配置mvc:view-controller直接解析到视图页面
查看>>
paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控...
查看>>
VMware12下 桥接模式 静态IP配置
查看>>
postfix邮件系统
查看>>
iBatis2学习笔记:多对多映射(双向)
查看>>
书目片段
查看>>
Linux-HA开源软件Heartbeat(配置篇)
查看>>
Citrix 桌面及应用虚拟化系列之一:XenServer安装
查看>>
Ext.Net学习笔记07:Ext.Net DirectMethods用法详解
查看>>
C#进阶系列——WebApi 接口测试工具:WebApiTestClient
查看>>
VBS变量名和标识符的介绍(转)
查看>>
iOS:iOS开发系列–打造自己的“美图秀秀”(下)
查看>>
ezjailserver备份和恢复方法
查看>>
NotifyMyFrontEnd 函数背后的数据缓冲区(二)
查看>>
【转】条件编译#ifdef的妙用详解_透彻
查看>>
清华大学 现代软件工程 - 实战经验分享
查看>>
国外购买域名
查看>>