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. oracel数据库ORA-28001: the password has expired

    调试c#项目时登录用户不成功ORA-28001: the password has expired错误 密码过期失效 网上查了一下,是Oracle11g密码过期的原因 Oracle提示错误消息ORA- ...

  2. django-admin常用总结

    django-admin常用总结 1.modelAdmin 1.1 list_display:显示列表. 1.2 search_fields:可被搜索的字段. 1.3 list_per_page:显示 ...

  3. Kubernetes概念及核心对象

    想学习更多相关知识请看博主的个人博客地址:https://blog.huli.com/ https://blog.huli.com/ 1.kubernetes快速入门 Kubernetes 集群将所有 ...

  4. elasticsearch的安装与使用

    1:官网进行下载 https://www.elastic.co/cn/elasticsearch/ 2:这里我用的是7.15.2 3:进行下载解压至d 盘 4:接下来我们cmd 切换目录进行运行 5: ...

  5. table表格的td行利用css显示...

      默认超过指定长度以...显示, 鼠标放到文本上显示全 代码如下 .fh{ max-width:220px; word-wrap:break-word; text-overflow:ellipsis ...

  6. linux定时任务 - at定时任务

    at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行作业.atd守护进程会检查系统上的一个特殊目录来获取at命令的提交的作业,默认情况下,atd守护进程每60秒检查一 ...

  7. Java运算符 算术运算法

    运算符 算术运算法:+,-,*,/,%,++,– 复制运算符:= 关系运算符:>,<,>=,<=,==,!= instanceof 逻辑运算符:&&,||,! ...

  8. Python 基于 selenium 实现不同商城的商品价格差异分析系统

    1. 前言 selenium 原本是一款自动化测试工具,因其出色的页面数据解析和用户行为模拟能力而常用于爬虫程序中,致使爬虫程序的爬取过程更简单.快捷. 爬虫程序与其它类型程序相比较,本质一样,为数据 ...

  9. [C++]C风格、C++风格和C++11特性的线程池

    线程池概念 假设完成一项任务需要的时间=创建线程时间T1+线程执行任务时间T2+销毁线程时间T3,如果T1+T3的时间远大于T2,通常就可以考虑采取线程池来提高服务器的性能 thread pool就是 ...

  10. python3输出由1、2、3、4这四个数字组成的每位数都不相同的所有三位数

    for i in range(1,5): for j in range(1,5): for k in range(1,5): if(i!=j and i!=k and j!=k): print(i*1 ...