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 继承情况下的类作用域嵌套
引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员 ...
随机推荐
- Docker - 安装&测试
一.什么是Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中 ...
- table表格的td行利用css显示...
默认超过指定长度以...显示, 鼠标放到文本上显示全 代码如下 .fh{ max-width:220px; word-wrap:break-word; text-overflow:ellipsis ...
- laravel html转pdf
这两天项目中需要将HTML页面转换为PDF文件方便打印,我在网上搜了很多资料.先后尝试了laravel-dompdf和laravel-snappy两种扩展包,个人感觉laravel-snappy比较好 ...
- 微服务7:通信之RPC
★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC ...
- xxl-job踩坑记录——执行器,执行10分钟自动失败
问题描述 上一篇Docker 部署xxl-job 报错:xxl-rpc remoting error(connect timed out), for url : xxxxxx - 这行代码没Bug - ...
- python+pytest接口自动化(9)-cookie绕过登录(保持登录状态)
在编写接口自动化测试用例或其他脚本的过程中,经常会遇到需要绕过用户名/密码或验证码登录,去请求接口的情况,一是因为有时验证码会比较复杂,比如有些图形验证码,难以通过接口的方式去处理:再者,每次请求接口 ...
- Spring——初识
1.1 使用 导包:Spring Web MVC(maven) <!-- https://mvnrepository.com/artifact/org.springframework/sprin ...
- Centos7下开启防火墙,允许通过的端口
1.查看防火墙状态 systemctl status firewalld 2.如果不是显示active状态,需要打开防火墙 systemctl start firewalld 3.# 查看所有已开放的 ...
- Django 之 modelForm (edit.html页面的编写)
models.py文件 from django.db import models # Create your models here. from django.db import models # C ...
- SpringCloudAlibaba 微服务讲解(二)微服务环境搭建
微服务环境搭建 我们这次是使用的电商项目的商品.订单.用户为案例进行讲解 2.1 案例准备 2.1.1 技术选型 maven :3.3.9 数据库:mysql 持久层:SpringData JPA S ...