JavaScript构造函数和原型:继承

news2024/11/30 10:56:58

ES6之前并没有给我们提供 extends 继承。我们可以通过构造函数+原型对象模拟实现继承,称为组合继承

call()

调用这个函数, 并且修改函数运行时的 this 指向  

fun.call(thisArg, arg1, arg2, ...) 

thisArg :当前调用函数 this 的指向对象

arg1,arg2:传递的其他参数

 借用构造函数继承父类型属性

核心原理: 通过 call() 把父类型的 this 指向子类型的 this ,这样就可以实现子类型继承父类型的属性。  

    // 父类
    function Person(name, age, sex) {
      this.name = name;
      this.age = age;
      this.sex = sex;
    }
    // 子类
    function Student(name, age, sex, score) {
      Person.call(this, name, age, sex);  // 此时父类的 this 指向子类的 this,同时调用这个函数
      this.score = score;
    }
    var s1 = new Student('zs', 18, '男', 100);
    console.dir(s1); 

 意思就是使用父构造函数的方法,并把this指向的是子构造函数 

 借用原型对象继承类型方法

一般情况下,对象的方法都在构造函数的原型对象中设置,通过构造函数无法继承父类方法。 

 核心原理:

将子类所共享的方法提取出来,让子类的 prototype 原型对象 = new 父类() 

本质:子类原型对象等于是实例化父类,因为父类实例化之后另外开辟空间,就不会影响原来父类原型对象

将子类的 constructor 从新指向子类的构造函数

  类的本质

1. class本质还是function.

2. 的所有方法都定义在类的prototype属性

3. 类创建的实例,里面也有__proto__ 指向类的prototype原型对象

4.所以ES6类它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // ES6 之前通过 构造函数+ 原型实现面向对象 编程
        // (1) 构造函数有原型对象prototype 
        // (2) 构造函数原型对象prototype 里面有constructor 指向构造函数本身
        // (3) 构造函数可以通过原型对象添加方法
        // (4) 构造函数创建的实例对象有__proto__ 原型指向 构造函数的原型对象
        // ES6 通过 类 实现面向对象编程 
        class Star {

        }
        console.log(typeof Star);
        // 1. 类的本质其实还是一个函数 我们也可以简单的认为 类就是 构造函数的另外一种写法
        // (1) 类有原型对象prototype 
        console.log(Star.prototype);
        // (2) 类原型对象prototype 里面有constructor 指向类本身
        console.log(Star.prototype.constructor);
        // (3)类可以通过原型对象添加方法
        Star.prototype.sing = function() {
            console.log('冰雨');

        }
        var ldh = new Star();
        console.dir(ldh);
        // (4) 类创建的实例对象有__proto__ 原型指向 类的原型对象
        console.log(ldh.__proto__ === Star.prototype);
        i = i + 1;
        i++
    </script>
</body>

</html>

 5.所以ES6的类其实就是语法.

6. 语法糖:语法糖就是一种便捷写法.   简单理解, 有两种方法可以实现同样的功能, 但是一种写法更加清晰、方便,那么这个方法就是语法糖

i = i + 1;    i++就是i = i + 1;的语法唐,因为这样的写法更加简单

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

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

相关文章

weapp源码反编译步骤

一、下载解密工具 解密工具下载&#xff1a;地址 二、在微信电脑版&#xff0c;打开目标小程序,在如下的目录中可以找到小程序的目录 这是我自自定义的缓存目录&#xff0c;找不到自己缓存目录在哪儿的&#xff0c;手机给自己的文件助手发个文档&#xff0c;打开所在目录&…

高标准企业级安全性,华为云会议为线上沟通保驾护航

如今&#xff0c;全球企业正在以办公室为主的工作环境向混合型工作环境转变&#xff0c;线上会议逐渐成为企业的刚需。事实上通过云会议的形式进行的远程沟通协作&#xff0c;如线上招聘、培训、课堂等也已非常普及&#xff0c;不过随之而来的网络安全风险也愈发引起各界关注。…

Linux有多重要?冲30万年薪Linux学习入门指南

与 Windows 相比&#xff0c;Linux 相对来说更加安全稳定&#xff0c;而且Linux可以定制化或者选择不同的发行版&#xff0c;下面借鉴网上的一张图片展示下 Linux 与 Windows 的区别。 ​ ​简单说就是linux 性能更好&#xff0c;直接通过命令行底层运行 1.廉价&#xff08;免费…

热门资讯:超大规模数字产业生态正在加快构建!

数字化转型新闻简报&#xff1a; 近年来&#xff0c;面对数字技术突飞猛进、政府政策倾斜支持、新冠疫情反向刺激&#xff0c;国内企业均从各个环节开始着手进行数字化转型&#xff0c;以期达到提效降本的目的。了解更多关于数字化转型的资讯才能更好地进行数字化转型。 01、华…

[附源码]Python计算机毕业设计宠物短期寄养平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Linux-挖矿木马清理

一、什么是挖矿木马 挖矿木马会占用CPU进行超频运算&#xff0c;从而占用主机大量的CPU资源&#xff0c;严重影响服务器上的其他应用的正常运行。黑客为了得到更多的算力资源&#xff0c;一般都会对全网进行无差别扫描&#xff0c;同时利用SSH爆破和漏洞利用等手段攻击主机。部…

苹果钱包(AppleWallet)接入操作手册,超详细

一、写在前面 1.1 起源 最近有一点忙&#xff0c;更新博客出现了一些延迟。由于在工作中使用了Apple Wallet&#xff0c;所以在结束后准备以此记录一下。希望后面有要做此功能的同学&#xff0c;能够有所启发&#xff0c;觉得有帮助的&#xff0c;记得点赞收藏关注哦~ 1.2 A…

C++多态

目录 多态的概念 多态的定义和实现 深入理解多态 C11 override 和 final 重载、覆盖(重写)、隐藏(重定义)的对比 抽象类 多态的原理 动态绑定与静态绑定 单继承和多继承关系的虚函数表 多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具…

SSM整合(五)

SSM整合之事务管理(一) 1.核心准备工作 1.1 导入spring-tx依赖 <!-- 事务spring-tx --> <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.3.22</version> </dependen…

【附源码】计算机毕业设计JAVA研究生招生信息管理

【附源码】计算机毕业设计JAVA研究生招生信息管理 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA …

旧苹果短信导入新苹果手机上,iphone短信迁移

概述&#xff1a;随着科技的快速发展&#xff0c;手机的更新换代周期也变得越来越短。那么问题来了&#xff1a;旧苹果短信导入新苹果手机上&#xff1f;相信这是新机主心中的痛点&#xff0c;那么今天小编就来教大家如何解决这个问题。 方法一、使用易我手机数据传输软件转移苹…

D0x-17(anti—Sp17)-3C12/TPGS抗精子蛋白单克隆抗体/维生素E聚乙二醇琥珀酸酯偶联阿霉素研究

下面分享了D0x-17(anti—Sp17)-3C12/TPGS抗精子蛋白单克隆抗体/维生素E聚乙二醇琥珀酸酯偶联阿霉素研究方法&#xff0c;来看&#xff01; D0x-TPGS聚乙二醇1000维生素E琥珀酸酯(TPGS)修饰阿霉素研究方法&#xff1a; 用硫酸铵梯度法制备TPGS修饰的阿霉素脂质体,并对其理化性质…

try/catch/finally的各种情况

众所周知&#xff0c;try语句报错&#xff0c;会执行catch语句&#xff0c;然后执行finally&#xff0c;以下这几种情况&#xff0c;看看会如何输出。 1、try语句中包含return&#xff0c;finally包含输出语句 public static void main(String[] args) {// write your code h…

YOLOX代码、预测(使用摄像头实时预测)及其添加SE注意力前后的实验结果

1. 代码获取 https://github.com/Le0v1n/ml_code/tree/main/ObjectDetection/YOLOX 如果代码对你有用&#xff0c;请star一下❤️ 2. 预测 2.1 图片预测 下载权值文件&#xff1a;https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth将权…

iOS键盘通知弹框使用小结

项目开发中文本框输入的时候经常会用到键盘弹框遮挡的问题。解决办法就是根据底部键盘弹出的高度动态的改变对应view的位置。这里以多行文本框输入为例&#xff0c;效果图如下。 //第一步&#xff0c;注册监听键盘通知 [[NSNotificationCenter defaultCenter] addObserver:self…

只会 Python 不行,不会 Python 万万不行

当下的环境大家有目共睹&#xff0c;未来一段时间情况如何&#xff0c;想必不少人心里也清楚&#xff0c;技术人走到中年&#xff0c;难免会焦虑&#xff0c;职场上干得不爽&#xff0c;但是跳槽也不容易&#xff0c;加上不少企业裁员&#xff0c;换个满意的工作更是难上加难。…

JavaScript——周技能检测——菜单编辑——2022年11月22日(考完)

JavaScript——周技能检测——菜单编辑——2022年11月22日&#xff08;考完&#xff09; 一、语言和环境 1. 实现语言&#xff1a;JavaScript。 2. 开发环境&#xff1a;VScode。 二、要求 1、在文本框中输入两个操作数和选择运算符后&#xff0c;在页面上显示输出结果。 …

电影《名侦探柯南:万圣节的新娘》观后感

上周看了电影《名侦探柯南&#xff1a;万圣节的新娘》&#xff0c;讲述了一场即将发生在东京涉谷的爆炸案件&#xff0c;引来各方的关注&#xff0c;柯南在参与案件的过程中&#xff0c;找出真凶的故事。 故事属于侦探类&#xff0c;有悬疑反转等要素&#xff0c;还是挺好的。不…

推荐系统实战3——推荐系统中Embedding层工作原理浅析

推荐系统实战3——推荐系统中Embedding层工作原理浅析学习前言什么是Embedding一、为什么要有Embedding二、推荐系统中常见的Embedding处理方式1、字符串形式的输入2、连续值&#xff08;特定范围值&#xff09;的输入三、Embedding的注意点学习前言 Embedding层是推荐系统特征…

盘点一下今年世界杯中国赞助商及联名入圈品牌

作为全世界的超级体育赛事&#xff0c;今年世界杯的ip流量无疑是值得期待的。虽然中国球队缺席&#xff0c;但中国赞助的热情是丝毫不减&#xff0c;中国官方合作伙伴&#xff08;赞助商&#xff09;分别是蒙牛、海信、vivo和万达。除了万达&#xff0c;其余三大品牌都是来自各…