ES6-11学习笔记--类与继承
ES5 中的类与继承:
function People(name, age) {
// this指向当前实例化对象
console.log(this);
// 实例属性
this.name = name
this.age = age
// 每一次new实例的时候累计到People.count当中
People.count++ // 不建议将方法写在类里面,
// 原因是每次实例化类的时候,方法也会被New实例
/*
this.show = function(){
console.log('只是this.show方法')
}
*/
}
// 实例方法
// 建议将方法写到类的原型当中,这样每次New一个实例就不会New一次方法
People.prototype.show = function () {
console.log('pshow');
} // 静态属性
// 不需要new实例化也可以使用
People.count = 0 // 静态方法
// 使用的方法跟new 实例化没有关系,可以直接使用
// 例如Math类
let m = Math.max(4, 5)
let r = Math.random()
// 创建静态方法
People.getCount = function () {
// 由于静态方法不用实例化,所以this指向构造函数People
console.log(this);
console.log('当前有' + People.count)
} let p1 = new People('张三', 18);
let p2 = new People('李四', 18);
console.log(p1);
console.log(People.count);
People.getCount()
类的继承:
// 父类
function Animal(name) {
this.name = name
}
Animal.prototype.showName = function () {
console.log('动物名是:' + this.name);
}
// 子类
function Dog(name, color) {
Animal.call(this, name) // 继承属性:将Dog的this和name传递给Animal类
this.color = color
}
// 继承方法
Dog.prototype = new Animal()
Dog.prototype.constuctor = Dog let d1 = new Dog('来福', '黑色')
console.log(d1);
d1.showName();
ES6 中的类与继承:
class People2 {
// 构造函数
constructor(name, age) {
// 实例属性
this.name = name
this.age = age
this._sex = -1 People2.count++
}
// 使用get和set也可以定义实例属性
// 定义时必须要在类的顶层位置进行定义
// 定义后在console打印类实例,发现定义的属性是半透明,隐藏属性
// 只定义get表示属性只读,只定义set表示属性只写
// 这种属性应用场景一般都是需要对属性做一定的业务逻辑判断进行定义
get sex() {
return this._sex
} set sex(val) {
this._sex = val
} // 实例方法
showName() {
console.log('showName' + this.name);
} // 静态方法
static getCount() {
console.log('getCount:' + People2.count)
}
} // 静态属性
// ES6里面暂时不支持在类里面用static进行定义静态属性
People2.count = 0; let p3 = new People2('王五', 18)
p3.sex = '女'
console.log(p3);
People2.getCount()
类的继承:
class Coder extends People2 {
constructor(name, age, company) {
//继承父类属性,super
super(name, age) this.company = company
}
showCompany() {
console.log('showCompany' + this.company);
}
} let c1 = new Coder('王大锤', 18, '谷歌')
console.log(c1);
c1.showName()
c1.showCompany()
ES6-11学习笔记--类与继承的更多相关文章
- C#图解教程学习笔记——类和继承
一.屏蔽基类的成员所有类都派生自object类.虽然类只能直接继承一个基类,但继承的层次没有限制.虽然派生类不能删除它继承的任何成员,但可以用与基类同名的成员来屏蔽(mask)基类成员.1. 要屏蔽一 ...
- C++11 学习笔记 std::function和bind绑定器
C++11 学习笔记 std::function和bind绑定器 一.std::function C++中的可调用对象虽然具有比较统一操作形式(除了类成员指针之外,都是后面加括号进行调用),但定义方法 ...
- 学习笔记——python(继承)
学习笔记(Python继承) 有几种叫法(父类-子类.基类-派生类)先拿代码演示一下: class father: def work(self): print("work>>&g ...
- 《python基础教程(第二版)》学习笔记 类和对象(第7章)
<python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person: def setName(self,name): self.name=n ...
- es6学习笔记-class之继承
继承 上一篇学习了class的概念,在es5时,对象的继承有好几种,原型链继承,借用构造函数继承,组合继承,原型式继承,寄生式继承以及寄生组合式继承,都是按照函数的形式去集成的,现在class也有它的 ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- Android(java)学习笔记62:继承Thread类创建线程类
package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了T ...
- Android(java)学习笔记2:继承Thread类创建线程类
1. 继承Thread类 创建线程类: package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分 ...
- C++学习笔记----4.4 继承情况下的类作用域嵌套
引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员 ...
随机推荐
- Vue-router路由判断页面是否登录,未登录跳转到登录页面
在index.js中 //定义路由 const router = new Router({ routes, strict: process.env.NODE_ENV !== 'production', ...
- Python 完美诠释"高内聚"概念的 IO 流 API 体系结构
1. 前言 第一次接触 Python 语言的 IO API 时,是惊艳的.相比较其它语言所提供的 IO 流 API . 无论是站在使用者的角度还是站在底层设计者的角度,都可以称得上无与伦比. 很多人在 ...
- java IO流体系--通识篇
1.I/O流是什么 Java的I/O流是实现编程语言的输入/输出的基础能力,操作的对象有外部设备.存储设备.网络连接等等,是所有服务器端的编程语言都应该具备的基础能力. I = Input(输入),输 ...
- laravel报错 : No application encryption key has been specified.
创建了新的laravel项目后, 运行提示:No application encryption key has been specified 解决方法: 这个是由于没有配置好 APP_KEY 在终端上 ...
- centeros 命令
一.查看系统时间.硬件时间 # date // 查看系统时间 #hwclock // 查看硬件时间 二.时间服务器上的时间同步的方法 安装ntpdate工具 # yum -y install ntp ...
- 将su模型导入arcgis,并获取高度信息,多面体转shp文件(ArcMap)
问题:将Sketchup中导出的su模型,导入arcgis并得到面shp文件,进而获取各建筑的高度.面积等信息. 思路: (1)导入arcgis得到多面体 (2)转为面shp文件 (3)计算高度/面积 ...
- 【Jenkins】基于Windows系统安装Jenkins
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 一.Jenkins简介 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种 ...
- linux下yum无法安装lrzsz,Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 linux虚拟机上准备安装一下rz sz,执行yum命令后提示如下: [root@tony001 ~]# yum install lrzsz Cen ...
- 部署YUM源仓库与NFS共享存储服务
镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 一.YUM YUM (Yellow dog Updater Modified) ●基于RPM包构建的软件更新机制 ●可以自动解决依赖关系 ●所有 ...
- 使用systemd-analyze 工具来分析各个服务进程的启动性能
systemd-analyze是一个分析启动性能的工具,用于分析启动时服务时间消耗.默认显示启动是内核和用户空间的消耗时间:使用systemd-analyze plot > boot.svg生成 ...