中文网:https://www.tslang.cn/

官网:http://www.typescriptlang.org/

目录:

最简单的类

  1. function Person (name, age) { // 构造函数
  2. this.name = name; // 属性
  3. this.age = age;
  4. }
  5. var p = new Person('张三', 25); // 实例化对象,p 为 Person 的一个实例
  6. console.log(p.name);

函数名首字母大写,函数内用 this 处理的函数称为构造函数。

用 new 关键字实例化构造函数的变量是该构造函数的实例。

类定义属性和方法

可以在构造函数和原型链上定义属性和方法。

  1. function Person (name, age) {
  2. // 构造函数内定义属性和方法
  3. this.name = name; // 实例属性
  4. this.age = age;
  5. this.run = function () { // 实例方法
  6. console.log(this.name + '在运动');
  7. }
  8. }
  9. // 原型链上定义属性和方法
  10. Person.prototype.sex = '男';
  11. Person.prototype.work = function () {
  12. console.log(this.name + '在工作');
  13. }
  14. var p = new Person('张三', 25);
  15. p.run(); // 调用实例方法
  16. p.work();

原型链上面的属性会被多个实例共享,构造函数里的属性不会

类的静态属性和方法

直接给构造函数设置属性和方法,不需要实例化即可获得的。

构造函数内的属性和方法,原型链上的属性和方法都需要实例化之后才可获得。

  1. function Person (name, age) {
  2. // 构造函数内定义属性和方法
  3. this.name = name; // 属性
  4. this.age = age;
  5. this.run = function () { // 方法
  6. console.log(this.name + '在运动');
  7. }
  8. }
  9. // 静态属性、方法
  10. Person.address = 'xxx';
  11. Person.getInfo = function () {
  12. console.log('静态方法');
  13. }
  14. // 调用
  15. console.log(Person.address);
  16. Person.getInfo();
  17. Person.run(); // 错误,只有实例对象才可调用
  18. var p = new Person();
  19. p.run();

继承:对象冒充实现

对象冒充可以继承构造函数里面的属性和方法,但是没法继承原型链上面的属性和方法

  1. // 父类
  2. function Person (name, age) {
  3. this.name = name;
  4. this.age = age;
  5. this.run = function () {
  6. console.log(this.name + '在运动');
  7. }
  8. }
  9. Person.prototype.sex = '男';
  10. Person.prototype.work = function () {
  11. console.log(this.name + '在工作');
  12. }
  13. // 子类继承父类
  14. function Child () {
  15. Person.call(this); // 对象冒充实现继承
  16. }
  17. var c = new Child('张三', 25);
  18. c.run();
  19. c.work(); // 错误,没有 work 方法

继承:原型链实现

原型链继承:可以继承构造函数里面的属性和方法,也可以继承原型链上面的属性和方法。但是实例化子类的时候没法给父类传参。

  1. // 父类
  2. function Person (name, age) {
  3. this.name = name;
  4. this.age = age;
  5. this.run = function () {
  6. console.log(this.name + '在运动');
  7. }
  8. }
  9. Person.prototype.sex = '男';
  10. Person.prototype.work = function () {
  11. console.log(this.name + '在工作');
  12. }
  13. // 子类继承父类
  14. function Child (name, age) {
  15. }
  16. Child.prototype = new Person(); // 原型链实现继承
  17. var c = new Child('张三', 25);
  18. c.run(); // undefined 在运动
  19. c.work(); // undefined 在工作

继承:原型链+对象冒充的组合继承模式

原型链继承:可以继承构造函数里面的属性和方法,也可以继承原型链上面的属性和方法。但是实例化子类的时候没法给父类传参。

  1. // 父类
  2. function Person (name, age) {
  3. this.name = name;
  4. this.age = age;
  5. this.run = function () {
  6. console.log(this.name + '在运动');
  7. }
  8. }
  9. Person.prototype.sex = '男';
  10. Person.prototype.work = function () {
  11. console.log(this.name + '在工作');
  12. }
  13. // 子类继承父类
  14. function Child (name, age) {
  15. Person.call(this, name, age); // 对象冒充继承,实例化子类可以给父类传参
  16. }
  17. Child.prototype = new Person(); // 原型链实现继承,继承原型链上的属性和方法
  18. // 或者
  19. // Child.prototype = Person.prototype; // 原型链实现继承,继承原型链上的属性和方法
  20. var c = new Child('张三', 25);
  21. c.run(); // 张三在运动
  22. c.work(); // 张三在工作

Typescript 学习笔记四:回忆ES5 中的类的更多相关文章

  1. Activiti工作流学习笔记(四)——工作流引擎中责任链模式的建立与应用原理

    原创/朱季谦 本文需要一定责任链模式的基础,主要分成三部分讲解: 一.简单理解责任链模式概念 二.Activiti工作流里责任链模式的建立 三.Activiti工作流里责任链模式的应用 一.简单理解责 ...

  2. CodeIgniter学习笔记四:CI中的URL相关函数,路由,伪静态,去掉index.php

    一.URL相关函数 1.加载url模块 加载url有两种方式: a.自动加载:在 application/config/autoload.php 中开启 $autoload['helper'] = a ...

  3. python 学习笔记(四) 统计序列中元素出现的频度(即次数)

    案例一:在某随机序例中,找到出现频度最高的3个元素,它们出现的次数是多少? from random import randint # 利用列表解析器生成随机序列,包含有30个元素 data = [ra ...

  4. Android(java)学习笔记79:java中InetAddress类概述和使用

    要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机. 在TCP/IP协议中,这个标识号就是IP地址. 那么,我们如果获取和操作I ...

  5. Android(java)学习笔记19:Java中InetAddress类概述和使用

    1. 要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机. 在TCP/IP协议中,这个标识号就是IP地址. 那么,我们如果获取和 ...

  6. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. href,src,url三者区别。

    在html中: href(Hypertext Reference)指向网络上的资源,在现有元素(如a标签)或现有文档(如link)与目标锚或资源之间建立链接. 建立链接的过程中,浏览器不会停止解析所在 ...

  2. mysql win10x64 免安装版 安装配置

    安装包下载或者 gaobo百度云/工具/开发工具/mysql-5.7.23-winx64.zip 第一步, 解压MySQL压缩包    将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是:  ...

  3. 《java与模式》阅读笔记02

    java语言的接口 在之前的编程作业中,我或多或少都用到了java的接口,但是接口的具体意思是什么,又该如何更好的使用呢?这个确实一知半解,带着这个问题我读了关于这些内容的章节. 所谓接口(inter ...

  4. Python设计模式 - UML - 包图(Package Diagram)

    简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...

  5. Mac Eclipse 配置 SDK Manager Proxy (代理)

    默认的下载地址非常慢,可以换成东软的代理. 顶部任务栏中选择SDK Manager -> 偏好设置 : 可以看到下载速度快了很多,出现类很多安装选项: 安装好后,在偏好设置窗口中,选择Clear ...

  6. XPath简介及节点

    XPath是一门在XML文档中查找信息的语言. XPath可用来在XML文档中对元素和属性进行遍历. XPath使用路径表达式在XML文档中进行导航. XPath路径表达式:XPath使用路径表达式来 ...

  7. linux后台运行命令:&和nohup

    常用后台运行命令包含:&和nohup 一.& 使用 当在前台运行某个作业时,终端被该作业占据:可以在命令后面加上& 实现后台运行.例如:sh test.sh & 适合在 ...

  8. MESSAGE_TYPE_X in Badi:MB_DOCUMENT_UPDATE_BEFORE

    Note:385830 Instead of writing code in MB_DOCUMENT_BEFORE_UPDATE,write a check in user exit MBCF0002 ...

  9. jqgrid获取选中行指定列的值

    部分js如下: var id = $("#grid-table").jqGrid('getGridParam','selrow');//根据点击行获得点击行的id(id为jsonR ...

  10. Pandas plot出图

    1.创建一个Series 这是一个线性的数据,我们随机生成1000个数据,Series 默认的 index 就是从0开始的整数,但是这里我显式赋值以便让大家看的更清楚 >>> imp ...