ts(typescript)面向对象之静态成员
ts(typescript)面向对象之静态成员
类的静态成员不是ts提出的新语法,而是
es6
中里面提出的
含义: 静态成员是指,附着在类上的成员(属于某个构造函数
的成员),在ts 中的表现是在类中使用 static
修饰符进行修饰的成员。例如:
class User {// 静态属性static users: User[] = [];constructor(public username: string,public password: string) { }// 静态方法static login() {// do something}
}
回忆构造函数
在js中,构造函数也是函数,只是特殊的地方在于,构造函数相对于普通函数来说。使用new 的方式来创建,并且构造函数里面是有
this
的。这个this 的指向是当前构造函数的对象。而普通的函数的this
的指向是指向全局window的。
如下例子:
function User(name, password){this.name = name;this.password = password;
}
上面是一个构造函数,构造函数里面默认是有this的,而且默认返回的是this.例如下面:
function A(){var this = {};// ... 中间有无数代码return this;
}
我们可以把上面的构造函数,实现最上面ts 的功能登录功能,登录是每一个用户都是同样的功能,因为我们可以放在构造函数的属性
上,达到共享一个方法,节约内存。
代码如下:
function User(name, password){this.name = name;this.password = password;
}
User.users = [];
User.login = function(){// do something
}
上面的js 写的User类,构造函数,和最上面ts 实现的功能都是一样,我们也可以看一下ts 编译的结果,对比一下。
特性
静态方法中的this
通过上面的回忆构造函数,我们可以得出 es6 或者 ts 中类的static,
static
就是把成员挂在类上面,在创建类的时候是不能调用的,只有通过类的属性的方式来进行调用。
实例方法中的this指向的是当前对象
而静态方法中的this指向的是当前类
静态方法的实用性——单例模式
单例模式适用的范围是,整个系统只要有一个实例存在就行,是唯一个的。这样做的好处是每当使用的时候,不需要重写创建对象,浪费不必要的内存
ts 实现单例模式
经典单例模式
class User {private constructor() { }static singleStone: User | undefined = undefined;static createStone() {if (this.singleStone) {return this.singleStone;} else {this.singleStone = new User();return this.singleStone;}}}
ts特别版本的单例模式
使用构造函数私有化,单例只读属性即可。如下
class User {private constructor() { }static readonly singleStone: User = new User();
}
ts(typescript)面向对象之静态成员相关推荐
- ts(typescript)面向对象之索引器
索引器 这个概念不是typescript 中提出的,而是c#中提出的 什么是索引器 我们都知道,ts 中 获取对象中的属性有好多种方式 通过点的方式来进行获取 通过属性表达式的方式进行获取 通过获取对 ...
- TypeScript class 的静态成员变量
Static Members 类可能有静态成员. 这些成员与类的特定实例无关. 它们可以通过类构造函数对象本身访问: class MyClass {static x = 0;static printX ...
- ts(TypeScript)定义服务器返回数据类型
ts(TypeScript)定义服务器返回数据类型 1.定义基本返回类型 export type JSONResponse = {stat: string;msg?: string; }; stat: ...
- TS | typescript与JavaScript的异同
文章目录 前言 typescript 特点 javascript 进化 typescript 局限与解决 前言 随着前段工程化的深入,引入强类型和更多面向对象方法的typescript逐渐被更多开发者 ...
- Vue3+Ant-design项目启用ts/typescript
Ant-design官方文档提供了js和ts两种案例,按照文档给项目install ant-design后写了个组件编译时发现只要加上`<script lang="ts"&g ...
- Typescript 面向对象
面向对象 类 (class) static关键字可以定义类属性| 类方法(静态属性|静态方法) class Person {static age: number = 18static sayHe() ...
- ts(typescript): 报错
元素隐式具有 "any" 类型,因为类型为 "string" interface startDay {lastSevenDate: stringstartOfM ...
- Typescript面向对象---上篇
目录 面向对象介绍 类(class) 构造器(构造函数)及this指向 类的继承 super关键字 公共.私有.受保护 修饰符 readonly 修饰符 参数属性 静态属性 静态方法 属性存取器(ge ...
- [ts]typescript高阶之typeof使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 typescript高阶:typeof使用 前言 一.typeof与对象结合使用 二.typeof与枚举结合使用 三.typeof与c ...
最新文章
- 如何让AI教机器自己玩俄罗斯方块?
- string来存放二进制数据
- 探索MySQL高可用架构之MHA(6)
- Simulink中进行电容充放电的一种简单仿真
- 火狐浏览器刷新ctrl+F5
- java-多线程知识
- yum mysql 如何启动_CentOS7用yum安装MySQL与启动
- php 生成随机数组,利用php如何获取随机数组列表
- php获取两个字符,php获取两个字符串之间的子字符串
- ps去水印教程_ps怎么去水印?ps去水印的三种方法
- xp服务器文件写保护怎么删除,winxp系统复制文件提示“请去掉写保护或使用另一张磁盘”的解决...
- 关于使用Python——写模拟手机通讯录查询系统
- Unity切割图片:把一张图片中的物体裁成多个单独的游戏物体
- android 一分钟倒计时动画,Android View篇之启动页倒计时动画的实现
- python精通能赚钱吗_月入3千到月入10万,精通数据分析的人到底有多赚?
- CF581B Luxurious Houses 模拟
- 利用AVISPA证明D2D协议
- Eclipse 创建JavaWeb工程
- rust 飞天指令_腐蚀RUST代码大全 腐蚀RUST指令代码一览
- vss 2005 手册
热门文章
- 隐藏的增长动力:中国工业的售后服务
- 我们的产品终于入驻淘宝服务市场
- 为什么示波器阻抗一般是1M欧或者50欧
- 自动驾驶【常用ADAS术语】
- pandas.read_csv读取csv文件遇到UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes
- java 如何添加背景音乐_Java JFrame 中添加背景音乐方法
- android位置闹钟测试图,位置闹钟安卓版
- ERP : 物料控制--独立需求
- 工作20年,我才明白这4个职场真相
- python人文社科研究_人文社科实证研究中问题与模型的关系