博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js--继承
阅读量:5168 次
发布时间:2019-06-13

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

js继承一般分为3种办法,一种是es5基于原型的继承以及es5的call( ),一种是es6基于类继承

// 使用JavaScript继承机制,实现两个类之间的继承。

// 父类:人,属性:年龄、身高、性别。方法:行走、行走、睡觉。
// 子类:学生,属性:年级、学分。方法:上学、放学、休学。
// 目标,创建子类学生的实例,调用行走、吃饭、睡觉、上学、放学、休学6个方法。

【基于原型继承】

        //es5实现继承[基于原型继承]            function Person(age,height,sex){                this.name=name;                this.age=age;                this.height=height;                this.sex=sex;                this.go=function(){                    console.log("行走")                };                this.eat=function(){                    console.log("行走")                };                this.sleep=function(){                    console.log("睡觉")                };            }                        function Student(nj,sc){                this.nj=nj;                this.sc=sc;                this.goSchool=function(){                    console.log("上学")                }                this.bybySchool=function(){                    console.log("放学")                }                this.overSchool=function(){                    console.log("休学")                }            }                                    Student.prototype=new Person();            var stu=new Student(2,30);            stu.go();            stu.sleep();            stu.goSchool();            stu.bybySchool();            stu.overSchool();

【call( )、apply( )】
说简单一点,这两函数的作用其实就是更改对象的内部指针,即改变对象的this指向的内容。这在面向对象的js编程过程中有时是很有用的。
两个函数基本相同,唯一的区别是,后者可以接受多个参数,即参数可以数组
func.call(func1,var1)对应的apply写法为:func.apply(func1,[var1,var2,var3])。

            

 

            

 

 

【基于类继承】

       //es6实现继承[基于类继承]            class Person{                constructor(age,height,sex){                    this.age=age;                    this.height=height;                    this.sex=sex;                }                go(){                    console.log("行走")                };                eat(){                    console.log("行走")                };                sleep(){                    console.log("睡觉")                };            }                        class Student extends Person{                constructor(nj,sc){                    super()                    this.nj=nj;                    this.sc=sc;                }                goSchool(){                    console.log("上学")                }                bybySchool(){                    console.log("放学")                }                overSchool(){                    console.log("休学")                }            }            var stu=new Student(2,30);            stu.go();            stu.sleep();            stu.goSchool();            stu.bybySchool();            stu.overSchool();

 

转载于:https://www.cnblogs.com/dshvv/p/5401272.html

你可能感兴趣的文章
Java网络编程--socket服务器端与客户端讲解
查看>>
List_统计输入数值的各种值
查看>>
学习笔记-KMP算法
查看>>
Timer-triggered memory-to-memory DMA transfer demonstrator
查看>>
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
64位主机64位oracle下装32位客户端ODAC(NFPACS版)
查看>>
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>