ts学习04-Es5中的类和静态方法 继承

最简单的类

function Person() {this.name = "张三";this.age = 20;
}
var p = new Person();
console.log(p.name);//张三

构造函数和原型链里面增加方法

function Person(){this.name='张三';  /*属性*/this.age=20;this.run=function(){console.log(this.name+'在运动');}
}
//原型链上面的属性会被多个实例共享   构造函数不会
Person.prototype.sex="男";
Person.prototype.work=function(){console.log(this.name+'在工作');
}
var p=new Person();
console.log(p.name);//张三
p.run();
p.work();

在这里插入图片描述

类里面的静态方法

function Person() {this.name = '张三';  /*属性*/this.age = 20;this.run = function () {  /*实例方法*/console.log(this.name + '在运动');}
}Person.getInfo = function () {console.log('我是静态方法');
}
//原型链上面的属性会被多个实例共享   构造函数不会
Person.prototype.sex = "男";
Person.prototype.work = function () {console.log(this.name + '在工作');
}
var p = new Person();
p.work();
//调用静态方法
Person.getInfo();

在这里插入图片描述

继承

对象冒充实现继承

function Person() {this.name = '张三';  /*属性*/this.age = 20;this.run = function () {  /*实例方法*/console.log(this.name + '在运动');}
}
Person.prototype.sex = "男";
Person.prototype.work = function () {console.log(this.name + '在工作');
}//Web类 继承Person类   原型链+对象冒充的组合继承模式
function Web() {Person.call(this);    /*对象冒充实现继承*/
}
var w = new Web();
w.run();  //对象冒充可以继承构造函数里面的属性和方法
w.work();  //对象冒充可以继承构造函数里面的属性和方法   但是没法继承原型链上面的属性和方法

在这里插入图片描述

原型链实现继承

function Person() {this.name = '张三';  /*属性*/this.age = 20;this.run = function () {  /*实例方法*/console.log(this.name + '在运动');}
}
Person.prototype.sex = "男";
Person.prototype.work = function () {console.log(this.name + '在工作');
}//Web类 继承Person类   原型链+对象冒充的组合继承模式
function Web() {}
Web.prototype = new Person();   //原型链实现继承
var w = new Web();
//原型链实现继承:可以继承构造函数里面的属性和方法 也可以继承原型链上面的属性和方法
w.run();
w.work();

在这里插入图片描述

原型链实现继承的问题

function Person(name, age) {this.name = name;  /*属性*/this.age = age;this.run = function () {  /*实例方法*/console.log(this.name + '在运动');}
}
Person.prototype.sex = "男";
Person.prototype.work = function () {console.log(this.name + '在工作');
}var p = new Person('李四', 20);
p.run();
p.work();

在这里插入图片描述
使用构造函数之后就会出现问题

function Person(name, age) {this.name = name;  /*属性*/this.age = age;this.run = function () {  /*实例方法*/console.log(this.name + '在运动');}
}
Person.prototype.sex = "男";
Person.prototype.work = function () {console.log(this.name + '在工作');
}function Web(name, age) {
}
Web.prototype = new Person();
var w = new Web('赵四', 20);   //实例化子类的时候没法给父类传参
w.run();
w.work();
var w1=new Web('王五',22);
w1.run();
w1.work();

在这里插入图片描述

原型链+对象冒充的组合继承模式

function Person(name, age) {this.name = name;  /*属性*/this.age = age;this.run = function () {  /*实例方法*/console.log(this.name + '在运动');}}
Person.prototype.sex = "男";
Person.prototype.work = function () {console.log(this.name + '在工作');
}function Web(name, age) {Person.call(this, name, age);   //对象冒充继承   实例化子类可以给父类传参
}Web.prototype = new Person();
var w = new Web('赵四', 20);   //实例化子类的时候没法给父类传参
w.run();
w.work();
var w1=new Web('王五',22);
w1.run();
w1.work();

在这里插入图片描述

原型链+对象冒充继承的另一种方式

function Person(name, age) {this.name = name;  /*属性*/this.age = age;this.run = function () {  /*实例方法*/console.log(this.name + '在运动');}
}
Person.prototype.sex = "男";
Person.prototype.work = function () {console.log(this.name + '在工作');
}
function Web(name, age) {Person.call(this, name, age);   //对象冒充继承  可以继承构造函数里面的属性和方法、实例化子类可以给父类传参
}
Web.prototype = Person.prototype;
var w = new Web('赵四', 20);   //实例化子类的时候没法给父类传参
w.run();
w.work();
var w1 = new Web('王五', 22);
w1.run()
w1.work();

在这里插入图片描述

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

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

相关文章

redis-持久化

目录 一、RDB RDB触发保存的两种方式 优劣势总结 二、AOF AOF持久化流程: 1、开启AOP 2、异常恢复 3、AOF的同步频率设置 4、ReWrite压缩 5、优劣势总结 Redis 4.0 混合持久化 redis是内存数据库,所有的数据都会默认存在内存中,如…

【2024系统架构设计】 系统架构设计师第二版-未来信息综合技术

目录 一 信息物理系统 二 人工智能 三 机器人技术 四 边缘计算 五 数字孪生体

时间序列预测实战(十七)PyTorch实现LSTM-GRU模型长期预测并可视化结果(附代码+数据集+详细讲解)

一、本文介绍 本文给大家带来的实战内容是利用PyTorch实现LSTM-GRU模型,LSTM和GRU都分别是RNN中最常用Cell之一,也都是时间序列预测中最常见的结构单元之一,本文的内容将会从实战的角度带你分析LSTM和GRU的机制和效果,同时如果你…

kubernetes v1.24.7 + docker

1. 背景 采用containerd作为容器运行时发现集群总是不稳定,因此切换成了docker 作为容器运行时; rootorangepi3b:~# uname -a Linux orangepi3b 5.10.160-rockchip-rk356x #1.0.2 SMP Thu Sep 21 17:07:22 CST 2023 aarch64 aarch64 aarch64 GNU/Linux…

论文导读 | 大语言模型与知识图谱复杂逻辑推理

前 言 大语言模型,尤其是基于思维链提示词(Chain-of Thought Prompting)[1]的方法,在多种自然语言推理任务上取得了出色的表现,但不擅长解决比示例问题更难的推理问题上。本文首先介绍复杂推理的两个分解提示词方法&a…

【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个带头双向循环链表: 该带头双向循环链表使用动态内存分配空间,可以用来存储任意数量的同类型数据. 带头双向循环链表结点(No…

Windows 安装 Docker Compose

目录 前言什么是 Docker Compose ?安装 Docker Compose配置环境变量结语开源项目 前言 在当今软件开发和部署领域,容器化技术的应用已成为提高效率和系统可移植性的关键手段。Docker,作为领先的容器化平台,为开发人员提供了轻松构…

2023 极术通讯-汽车“新四化”路上,需要一片安全山海

导读:极术社区推出极术通讯,引入行业媒体和技术社区、咨询机构优质内容,定期分享产业技术趋势与市场应用热点。 芯方向 【Armv9】-动态TrustZone技术的介绍 动态 TrustZone 是提供多租户安全媒体 pipeline 的绝佳工具。完全不受操作系统、虚…

Java的动态代理Proxy.newProxyInstance

本文参考:java动态代理Proxy.newProxyInstance-CSDN博客 一、动态代理定义 利用Java的反射技术,在运行期间创建可以实现某些给定接口的新类,称为动态代理类。 此处代理的接口(Interfaces),不是类(Class&…

CSS中2种复合选择器

1:交集选择器 作用:选中同时符合多个条件的元素 语法:选择器1选择器2选择器n{} 注意:若交集选择器中有元素选择器,必须使用元素选择器开头 2:并集选择器 作用:同时选择多个选择器对应的元素 语法:选择…

矩阵的QR分解

矩阵的QR分解 GramSchmidt 设存在 B { x 1 , x 2 , … , x n } \mathcal{B}\left\{\mathbf{x}_{1},\mathbf{x}_{2},\ldots,\mathbf{x}_{n}\right\} B{x1​,x2​,…,xn​}在施密特正交化过程中 q 1 x 1 ∣ ∣ x 1 ∣ ∣ q_1\frac{x_1}{||x_1||} q1​∣∣x1​∣∣x1​​ q k …

Axure RP Pro 8 mac/win中文版:打造无限可能的原型设计工具

在如今的数字化时代,原型设计工具越来越受到设计师和产品经理们的重视。而Axure RP Pro8作为一款强大的原型设计工具,成为了众多专业人士的首选。 首先,Axure RP Pro8具备丰富的功能。它提供了多种交互元素和动画效果,使得用户可…

java8 LocalDate、LocalTime、LocalDateTime

LocalDate:表示日期(年月日) LocalTime :表示时间(时分秒) LocalDateTime:表示时间 日期 (年月日时分秒),是java8最常用的日期类 这些类使用了final来修饰&am…

电商API接口对接过程中有哪些业务问题需要注意

接口对接流程梳理 产品经理 知晓自己负责系统做什么,外接三方系统做什么。 系统对接产品经理实操步骤: ①与公司业务人员沟通,与系统对接方产品/技术描述业务场景,沟通发放接口文档材料 ②拿到材料之后API接口过多请对方圈定…

邮件|gitpushgithub报错|Lombok注解

基于 Spring Boot 搭建一个定时发送邮件的项目可以按照以下步骤进行: 创建一个新的 Spring Boot 项目,并添加所需的依赖。在 pom.xml 文件中添加以下依赖项(根据你的需要进行调整): xml org.springframework.boot sp…

cannot find -lmysqlclient 错误解决

编写linux程序使用数据库出现cannot find -lmysqlclient错误 错误原因 是因为编译找的动态库是根据去找/usr/lib文件夹下的库,而centos会默认将mysql相关的库装再/usr/lib64/mysql下,所以才会出现找不到-lmysqlclient的错误 解决方案 将/usr/lib64/m…

chkconfig及服务脚本

运行级别 linux启动之后处于某个状态 linux运行级别 0:关机 #设置即重启 1:单用户,为root权限,禁止远程登录 2:无网络文本模式 3:多用户文本模式 4:未使用 5:图形化…

SR-LIO--手写紧耦合IESKF

1.ESKF初始化 void eskfEstimator::tryInit(const std::vector<std::pair<double, std::pair<Eigen::Vector3d, Eigen::Vector3d>>> &imu_meas) { //通过imu测量值初始化均值&#xff0c;协方差&#xff1b;(均值用于初始化零偏&#xff0c;协方差用于…

鸿蒙应用开发初尝试《创建项目》,之前那篇hello world作废

经过几年的迅速发展&#xff0c;鸿蒙抛弃了JAVA写应用的方式&#xff0c;几年前了解的鸿蒙显然就gg了。 这几年鸿蒙发布了方舟&#xff08;ArkUI Arkts&#xff09;&#xff0c;将TypeScript作为了推荐开发语言&#xff0c;你依然可以用FAJS,但华为推荐用StageArkTs!!!那么你还…

Java架构师软件架构设计导论

目录 1 软件架构设计导论2 HR角度看架构师3 软件架构设计概述4 顶级大师眼中的架构5 建筑中的架构师6 软件架构的发展阶段7 软件架构的意义8 架构是项目干系人进行交流的手段9 架构有助于循序渐进的原型设计10 架构是设计决策的体现11 架构明确系统设计约束条件12 架构与组织结…