分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

JS学习之类的继承

发布时间:2023-09-06 02:23责任编辑:胡小海关键词:暂无标签

JS继承的实现方式

首先声明一个父类

function Animal(name){ ??????????this.name =name || ‘Animal‘; ??????????this.sleep=function(){ ??????????????console.log(this.name +‘在睡觉呢~‘); ??????????} ??????} ??????Animal.prototype.eat=function(food){ ??????????console.log(this.name+‘正在吃‘+food); ??????}

1:构造函数的继承

 function Dog(name){ ??????????Animal.call(this); ??????????this.name=name || ‘dog‘; ??????} ??????var dog =new Dog(); ??????console.log(dog);

对象dog继承了父类animal身上的属性和方法,不过属性相同,覆盖了父类的属性

特点: 1 :子类共享父类的属性和方法

            2:可以向父类传递参数

缺点:子类只能继承父类的属性和方法但并不能继承父类的原型身上的属性和方法

2:原型链的继承

 function Dog(name){ ????????this.name=name || ‘dog‘; ??????} ??????Dog.prototype=new Animal(); ??????var dog =new Dog(); ??????console.log(dog);
??????console.log(dog.constructor); ?//指向了Animal
/*

        ? Animal(name){
           this.name =name || ‘Animal‘;
           this.sleep=function(){
           console.log(this.name +‘在睡觉呢~‘);
            }
         }


*/

特点:1:父类的属性和方法都能继承的到,包括父类原型身上的属性和方法也可以继承

           2:简单,方便

缺点:1:创造子类实例时无法向父类传参

           2:无法判断对象是子类实例化出来的还是父类实例化出来的。

3组合继承

 function Dog(name){ ???????Animal.call(this); ???????this.name=name || ‘dog‘; ??????} ??????//Dog.prototype=new Animal(); //缺点在子类实力化的过程中父类函数执行了2次 ??????Dog.prototype = Object.create(Animal.prototype); ??????Dog.prototype.constructor=Dog; ??????var dog=new Dog(); ??????console.log(dog.constructor);/* ????? Dog(name){ ?????????Animal.call(this); ?????????this.name=name || ‘dog‘; ????}*/

第三种方案是目前比较完美的

JS学习之类的继承

原文地址:https://www.cnblogs.com/xubj/p/9987992.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved