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
extends
constructor
static
super
get / set
 
类的定义:
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学习笔记--类与继承的更多相关文章

  1. C#图解教程学习笔记——类和继承

    一.屏蔽基类的成员所有类都派生自object类.虽然类只能直接继承一个基类,但继承的层次没有限制.虽然派生类不能删除它继承的任何成员,但可以用与基类同名的成员来屏蔽(mask)基类成员.1. 要屏蔽一 ...

  2. C++11 学习笔记 std::function和bind绑定器

    C++11 学习笔记 std::function和bind绑定器 一.std::function C++中的可调用对象虽然具有比较统一操作形式(除了类成员指针之外,都是后面加括号进行调用),但定义方法 ...

  3. 学习笔记——python(继承)

    学习笔记(Python继承) 有几种叫法(父类-子类.基类-派生类)先拿代码演示一下: class father: def work(self): print("work>>&g ...

  4. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  5. es6学习笔记-class之继承

    继承 上一篇学习了class的概念,在es5时,对象的继承有好几种,原型链继承,借用构造函数继承,组合继承,原型式继承,寄生式继承以及寄生组合式继承,都是按照函数的形式去集成的,现在class也有它的 ...

  6. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  7. Android(java)学习笔记62:继承Thread类创建线程类

    package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了T ...

  8. Android(java)学习笔记2:继承Thread类创建线程类

    1. 继承Thread类 创建线程类: package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分 ...

  9. C++学习笔记----4.4 继承情况下的类作用域嵌套

    引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员 ...

随机推荐

  1. Log4j2详解——XML配置详解

    Log4j2详解--XML配置详解 找到了个很详细的文章链接 https://www.jianshu.com/p/bfc182ee33db

  2. php模式的设计

    工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式. 工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而这只是一种原则,虽然工厂方法可以任意命名这个静态 ...

  3. DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()

  4. 09 Java的方法 方法的重载 命令行传参

    3.方法的重载 重载就是在一个类中,有相同的函数名称,单形参不同的函数. 方法的重载的规则: 方法名称必须相同. 参数列表必须不同(个数不同.或类型不同.参数排序顺序不同等). 方法的返回类型可以相同 ...

  5. idea Alt+Insert:构造函数

    Alt+Insert:构造函数 包含参数: Constructor:全参构造 Getter:必须的 return 字段名 Setter:this 值 Getter and Setter:选择字段以生成 ...

  6. LGP5071题解

    我给这道题提供了314次提交qwq 题目大意 给定一个长为 \(n\) 的序列,每次询问给定一个 \(L\) 和 \(R\),求 \([L,R]\) 中所有数乘起来的质因数个数,答案对 \(19260 ...

  7. SpringMVC工作流程 --通透较详细

    SpringMVC工作流程 SpringMVC工作流程 流程说明(重要): (1)客户端发送一个http请求给前端控制器(DispatcherServlet): (2)前端控制器(DispacherS ...

  8. Arch Linux 安装 Anbox

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 Anbox 介绍 Anbox 是一个可以在 GNU/Linux 发行版上运行 Android App 的容器,是一个开源兼容层. 其工作原理是在 ...

  9. docker学习笔记(4)- 应用数据管理(容器外)

    简介 docker storage driver支持了image分层存储和容器可写层的存储管理,使用挂载主机目录的方式可以将数据存储在主机的文件系统上或内存中. 之前学习过镜像的分层存储,以Docke ...

  10. 关于IIS站点最大并发量分析

    关于IIS站点最大并发量分析,会有如下这个疑问:IIS站点最大并发量是多少? 一般为:   IIS站点最大并发量=队列长度+进程数量[即最大工作进程数] 通过这个公式,可以基本评估出一个IIS站点的最 ...