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 继承情况下的类作用域嵌套
引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员 ...
随机推荐
- LeetCode-001-两数之和
两数之和 题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答 ...
- 【Apollo自动驾驶源码解读】车道线的感知和高精地图融合
模式选择 在modules/map/relative_map/conf/relative_map_config.pb.txt文件中对模式进行修改: lane_source: OFFLINE_GENER ...
- CF587F&CF547E题解
这两道题好像啊 贡献一种使用SAM和ACAM草两道题的方法 下面假装有 \(O(\sum |S|=m)=O(n)\). 你看看,这CF换过多少个出题人啦?换汤不换药啦!其实这两道题是同一个人出的 CF ...
- UOJ188题解
我们先枚举一个最大质因子,然后设 \(dp[n][k]\) 为 \(n\) 以内使用了 \(pri[k]\) 以内的质数的数的最大质因子之和,答案就是: \[\sum_{k\leq n}dp[\lfl ...
- RandomStringUtils 生成随机字符串
代码: System.out.println(RandomStringUtils.randomAlphanumeric(32));System.out.println(RandomStringUtil ...
- JavaWeb 11_jsp九大内置对象
1. out: 输出对象,向客户端输出内容2. request: 请求对象;存储"客户端向服务端发送的请求信息" request对象的常见方法: String getParamet ...
- 6月5日 python复习 模块
"""1. os和sys都是干什么的?2. 你工作中都用过哪些内置模块?3. 有没有用过functools模块?"""1. os 系统相关 ...
- Vue中import和require的对比
Vue中import和require的对比 一.前言 vue框架想必是我们前端朋友们必学的知识点,说它难也没有那么难,说简单也没有那么简单,主要技术就是那么几个,可是里面的细节很多,有些时候我们会 ...
- Android studio Error occurred during initialization of VM
Unable to start the daemon process. This problem might be caused by incorrect configuration of the d ...
- Vue实例(1)
vue入门示例(一) herokang 2019-08-21 15:33:58 12696 收藏 44 分类专栏: 前端 文章标签: vue入门 版权 为了让广大后端人员更快的理解上手vue,我们 ...