JS中实现继承

1.使用call实现继承(不推荐)

function Animal(name) {this.name = name;this.run = function() {console.log(this.name, "跑");}
}
function Dog(name) {// 继承Animal.call(this, name);this.sleep = function() {console.log(this.name, "睡");}
}
dog = new Dog("旺财");
dog.run();    // 旺财 跑
dog.sleep();  // 旺财 睡

(1)优点

  • 父类的构造函数在子类构造函数中调用,可以向父类构造函数传递参数;
  • 子类实例化后,不会受到父类实例化后修改属性的影响。

(2)缺点

  • 子类实例无法通过instanceof判断出父类的实例;
  • 无法继承父类原型链上的属性和方法,只能继承父类的实例属性和方法;
  • 子类实例无法通过instanceof判断出父类的实例;

2.使用原型实现继承(不推荐)

function Animal(){this.run = function() {console.log(this.name, "跑");}
}
function Dog(name){this.name = name;this.sleep = function() {console.log(this.name, "睡");}
}
// 继承
Dog.prototype = new Animal();dog = new Dog("大黄");
dog.sleep(); // 大黄 睡
dog.run();   // 大黄 跑

优点:

  • 子类实例可以通过instanceof判断出父类的实例;
  • 每个子类实例共享父类的属性和方法,节省内存。

缺点:

  • 无法继承父类原型链上的属性和方法,只能继承父类的实例属性和方法;
  • 子类实例共享父类的属性和方法时,如果修改了属性值,其他实例也会受到影响;
  • 无法传递参数给父类的构造函数,父类的属性只能通过子类的构造函数传递。

3.上述两种方法结合(推荐)

// 1.定义一个父类
function Animal(name) {this.name = name;
}// 2.定义父类的原型方法
Animal.prototype.speak = function() {console.log(this.name + ' makes a noise.');
};// 3.定义一个子类
function Dog(name, breed) {Animal.call(this, name); // 调用父类的构造函数this.breed = breed;
}// 4,将子类的原型设置为父类的一个实例,实现继承
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;// 5.定义子类的原型方法
Dog.prototype.bark = function() {console.log(this.name + ' barks.');
};// 创建一个Dog对象并调用其方法
var myDog = new Dog('Buddy', 'Labrador');
myDog.speak(); // Buddy makes a noise.
myDog.bark(); // Buddy barks.

优点:

  1. 子类实例可以通过instanceof判断出父类的实例;
  2. 子类即拥有父类构造函数中的属性和方法,也有父类prototype中的属性和方法;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2 物理层(一):数据通信的基本概念

目录 目标1 数据通信的基本概念1.1 数据通信的基本概念1、数据2、信息3、信号4、信道5、通信和数据通信6、数据通信网7、码元和码字8、数据分组9、基带传输、频带传输和宽带传输基带传输频带传输宽带传输 1.2 数据通信的主要技术指标1.3 数据通信系统1、数据通信系统基本模型编…

【ARM 嵌入式 编译系列 2.7 -- GCC 编译优化参数详细介绍】

文章目录 GCC 编译优化概述常用优化等级-O1 打开的优化选项-O2 打开的优化选项-O3 打开的优化选项-Os 打开的优化选项优化技术使用优化选项的注意事项GCC 编译优化概述 GCC(GNU Compiler Collection)包含了用于C、C++、Objective-C、Fortran、Ada和Go等语言的编译器。在编译…

能和ai聊天的软件有吗?分享4款智能软件!

随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面。如今,我们只需一款软件,就能与AI进行流畅的对话。今天,就让我们一起揭开这些神秘软件的神秘面纱,看看它们如何让我们的沟通变得…

ONLYOFFICE:一站式办公,探索高效办公新境界

写在前面ONLYOFFICE 介绍ONLYOFFICE 有哪些优势ONLYOFFICE 文档 8.0 发布如何体验 ONLYOFFICEONLYOFFICE 文档部分页面截图 写在前面 在当今这样一个数字化时代,办公软件已经成为我们日常工作中不可或缺的一部分,熟练使用 Office、WPS、腾讯文档、金山文…

搜大学英语题,用哪个软件好?哪款大学搜题工具好用? #媒体#职场发展#媒体

大学生除了学习专业知识外,还应该关注和学习一些软技能,如沟通能力、团队合作和领导力等,以提升自己的综合素质。 1.好大学在线 好大学在线是上海交通大学拥有的中国顶尖慕课平台。 依托该平台,上海交通大学与百度及金智教育实…

Java 如何操作 nginx 服务器上的文件?

随着Java技术的不断发展,越来越多的开发人员开始使用Java来操作服务器上的文件。其中,如何操作nginx服务器上的文件也是许多Java开发人员所关注的重点之一。本文将介绍Java操作nginx服务器上文件的基本方法。 一、使用Java的File类 Java的File类可以用…

机器学习 | 基于网格搜索的SVM超参数调节

机器学习模型被定义为一个数学模型,其中包含许多需要从数据中学习的参数。然而,有一些参数,称为超参数,这些参数不能直接学习。它们通常是由人类在实际训练开始前根据直觉或经验和试验选择的。这些参数通过提高模型的性能&#xf…

网络协议梳理

1 引言 在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什…

每日一题——LeetCode1403.非递增顺序的最小子序列

方法一 个人方法: 按题目要求,尽可能先取出nums里最大的值,这样才能满足子序列尽可能短且元素之和最大 var minSubsequence function(nums) {nums.sort((a,b)>a-b)let sum1nums.reduce((a,b)>ab,0),sum20,res[]while(sum1>sum2){…

18个8年以上服务器开发经验的面试题(2)

目录 1.问:如何设计一个系统来确保在可能出现网络分区和故障的分布式环境中的数据一致性?

【并发编程】原子累加器

📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳重求进,晒太阳 JDK8之后有专门做累加的类,效率比自己做快数倍以上 累加器性能比较 参数是方法 // supplier 提供者 无中生有 ()->结果// func…

golang并发安全-sync.Once

什么是sync.Once sync.Once 是 Go 语言中的一种同步原语,用于确保某个操作或函数在并发环境下只被执行一次。它只有一个导出的方法,即 Do,该方法接收一个函数参数。在 Do 方法被调用后,该函数将被执行,而且只会执行一…

Excel——高级筛选匹配条件提取数据

一、筛选多条件 Q:筛选多个条件,并将筛选出的内容复制到其他区域 点击任意一个单元格 点击【数据】——【筛选】——【高级筛选】 选择【将筛选结果复制到其他位置】——在【列表区域】 鼠标选择对应的区域位置,条件区域一定要单独写出来&a…

政安晨:示例演绎Python的函数与获取帮助的方法

调用函数和定义我们自己的函数,并使用Python内置的文档,是成为一位Pythoner的开始。 通过我的上篇文章,相信您已经看过并使用了print和abs等函数。但是Python还有许多其他函数,并且定义自己的函数是Python编程的重要部分。 在本…

【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)

前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

将xyz格式的GRACE数据转成geotiff格式

我们需要将xyz格式的文件转成geotiff便于成图,或者geotiff转成xyz用于数据运算,下面介绍如何实现这一操作,采用GMT和matlab两种方法。 1.GMT转换 我们先准备一个xyz文件,这里是一个降水文件。在gmt中采用以下的语句实现xyz转grd…

代码随想录二刷——栈与队列day12

文章目录 前言栈与队列知识点 一、 239. 滑动窗口最大值二、347. 前 K 个高频元素总结 前言 一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油! 二刷决定精刷了,于是参加了卡子哥的刷题班&#xf…

java synchronized浅析

介绍synchronized synchronized 是Java编程语言中的一个关键字,用于实现线程间的同步。在多线程环境下,它确保了共享资源在同一时刻只能被一个线程访问或修改,从而避免了因多个线程并发操作同一数据而导致的数据不一致和竞态条件。 synchroni…

070:vue+cesium: 利用canvas设置径向渐变色材质

相关API参考: https://cesium.com/learn/cesiumjs/ref-doc/ColorMaterialProperty.html 第070个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置线性渐变色的材质,这里使用canvas的辅助方法。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. …

阴阳家邹衍的五行相生相克,比星座更火爆

古天乐主演的《寻秦记》,有一个老头叫“邹夫子”,他就是战国的邹衍。 邹衍年轻时,去齐国的稷下学宫,学习儒家。了解到天有五种德行,分别是仁、义、礼、智、信。 《尚书洪范》记载:“五行:一曰水…