ES5继承

ES5继承ES5 没有像 ES6 那样继承的方法 他也没有正了八经的类 所以都是自己封装的函数首先 要有个父类 functionBall user this name user Ball prototype a 1 b 2 c function

ES5没有像ES6那样继承的方法,他也没有正了八经的类,所以都是自己封装的函数

首先,要有个父类

function Ball(user) { this.name=user; } Ball.prototype={ a:1, b:2, c:function () { this.a=10; } }; Ball.prototype.constructor=Ball;

然后要写一个继承的函数,最重要的就是这个函数,继承就是对父类原型的继承

function extend(subClass,supClass) { // 创建一个空类,空的构造函数 function A() {} // 设置这个空类的原型是父类的原型,这样保证这个空类和父类一样,但是没有父类构造函数内容 // 这样就解决直接继承时调用两次构造函数的情况 A.prototype=supClass.prototype; // 将这个与父类相似的类实例化后赋值给子类的原型,这样子类的原型就是这个空类的实例化对象 // 因此子类的原型里面就有了空类的原型下所有属性和方法 subClass.prototype=new A(); // 子类的原型指针指向子类的构造函数 subClass.prototype.constructor=subClass; // 因为可能在子类使用到父类原型 // 设置子类的属性superClass是父类的原型对象 subClass.superClass=supClass.prototype; // 如果父类原型的指针没有指向父类的构造函数,仍然指向的是对象 if(supClass.prototype.constructor===Object.prototype.constructor){ // 将父类的原型指针指向父类构造函数 supClass.prototype.constructor=supClass; } }

然后想要继承的子类就可以继承了,下面的代码对继承的子类有一些自己的修改

function Box(user) { Ball.call(this,user); } extend(Box,Ball); Box.prototype.d=function () { }; Box.prototype.e=5; Box.prototype.c=function () { Box.superClass.c.call(this); console.log(this.a); };

下面总结一下:

ES5的继承: 1、先写extend函数 2、新建父类和父类所有原型属性和方法 3、新建子类,并且在子类的构造函数中执行 父类构造函数.call(this,参数1,参数2..) 4、使用extend函数,填入子类和父类,完成继承 5、只能使用子类.prototype.属性/方法=...设置添加新的子类方法和属性 不能使用 子类.prototype={...}这种添加属性方法,这样会覆盖继承的方法 6、覆盖父类的方法,子类.prototype.父类方法=function(){} 7、super父类方法,就是希望在父类的该方法执行后在添加一些新的内容 子类.superClass.父类方法.call(this,参数...); 这句写在子类覆盖父类方法中 8、最后就可以使用new来实例化对象了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217534.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午9:21
下一篇 2026年3月18日 上午9:22


相关推荐

  • 【CentOS 7笔记】 文档查看cat_more_less_head_tail

    【CentOS 7笔记】 文档查看cat_more_less_head_tail

    2021年6月7日
    107
  • WIndows无法连接共享打印机,错误码:0x0000011b

    WIndows无法连接共享打印机,错误码:0x0000011bWIndows 无法连接共享打印机 错误码 0x0000011bWi 电脑 1 直连的打印机 设备了共享 从另一个电脑 2 访问电脑 1 的共享打印机 连接提示错误 0x0000011b 如下 经询问使用人 之前电脑 2 是可以正常连接到电脑 1 的共享打印机的 只是最近几天突然连接失败了 后得知电脑 1 最近有更新过系统补丁 经排查 通过卸载 KB 补丁 重启电脑 1 后 电脑 2 成功连接到共享打印机 测试打印正常 处理过程 1 打开控制面板 程序 程序和功能 已安装更新 找到对应的 KB 补丁 右

    2026年3月19日
    2
  • DSP28335定时器

    DSP28335定时器定时器作用 定时器就是用来准确控制时间的工具 精确的控制时间 以满足控制某些特定事件的要求 例如 在电机控制中 要求为在系统启动 5S 后加载负载 这时候就能够利用定时器来精确控制 在 F28335 中 有 3 个 32 位的定时器 分别是 Timer0 Timer1 Timer2 其中 Timer1 Timer2 被系统保留 用于实时操作系统 如果不用于实时操作系统 用户也可以使用这两个定时器定时器工

    2026年3月26日
    2
  • java缓存处理_清理java缓存

    java缓存处理_清理java缓存 java缓存技术一(转)看一粒沙中的世界,一朵野花中的天堂。把无限握于掌中,把永恒握于瞬间。——威廉•布莱克开始讨论缓存之前,让我们先来讨论讨论另外一个问题:理论和实践.从ahuaxuan接触的程序员来看,有的程序员偏实践,有的程序员偏理论,但是这都是不好的行为,理论和实践同样重要,我们在做很多核心的算法的时候,没有理论根本无从下手,而在我们多年的实践中,不

    2026年4月15日
    5
  • Mac 苹果电脑安装 OpenClaw 完全指南IT 从业者保姆级教程

    Mac 苹果电脑安装 OpenClaw 完全指南IT 从业者保姆级教程

    2026年3月13日
    3
  • c++的发展方向

    c++的发展方向我现在是一名在校大学生,在学校期间自学C++有两年的时间了,看过C++Primer,stl,insideC++model(侯捷翻译的那本),com本质论等… 在学习C++的过程中感觉C++语言本身的确很强大,而且随着学习的深入,我逐渐感到要想在短时间了解这门语言的本质几乎是不可能的.因为我也学习过javaSE的一些东西,感觉就java和C#来说,语言本身不难,不过在底层调用方面有时候就

    2022年4月30日
    70

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号