TS之类的属性和方法
2023-09-11 14:19:18 时间
声明
我们用关键字class来声明一个类
class Person{
...
}
属性
在TS中类的属性一共有三种,在属性面前添加相应的修饰符便可
属性分类
class Person{
name:string = "zhubajie" // 实例属性
static age = 89 // 类属性
readonly addr:string = "高老庄" // 只读属性
}
实例属性
- 直接定义的属性属于实例属性
- 他必须通过类实例化之后才能使用
类属性
- 以static开头的属性为类属性
- 他可以通过类直接访问
Person.age
只读属性
- 以
readonly
定义的属性为只读属性,不可修改
属性修饰符
- pubilc 公共属性,可以再任意位置访问和修改(实例属性,实例化之后访问)
- private 私有属性,只能在类的内部进行访问和修改(一般声明的时候我们会以
_
开头) - protected 受保护的属性,只能在当前类和当前类的子类中进行访问
class Person{
public name = "SunWuKong"
private age = 30
protected sex = "male"
}
const person = new Person()
console.log(person.name)
console.log(person.age) // 错误 只能在Person这个类中进行访问
console.log(person.sex) // 错误 只能在Person这个类和其子类中访问
此外,还有readOnly
属性,以他修饰的属性只能读取不能修改
getter与setter
类中的每一个属性内置getter
方法和setter
方法
- getter方法用于获取属性
- setter 方法用于设置属性
这样,我们可以对属性读取和操作做一些拦截,设置如下
class Person1{
private _name:string
constructor(name:string){
this._name = name;
}
set name(value:string){
this._name = value
}
get name(){
return this._name
}
}
- 当我们进行读取的时候,其实是走的get这个逻辑
- 当我们对于属性进行赋值的时候,其实是搜的set 这个逻辑
方法
static(静态方法)
经过
static
关键字修饰的方法属于类方法,可以通过类直接使用
class BaJie{
name = "BaJie"
static age = 18
static sayName(){
console.log("八戒")
}
}
// 通过类直接访问
BaJie.sayName()
console.log(BaJie.age);
const bajie = new BaJie()
bajie.sayName() // 实例化之后不可访问
当有不规范的语法的时候,ts就不会进行编译,如上面的编译如下
var BaJie = /** @class */ (function () {
function BaJie() {
this.name = "BaJie";
}
BaJie.sayName = function () {
console.log("八戒");
};
BaJie.age = 18;
return BaJie;
}());
// 通过类直接访问
BaJie.sayName();
console.log(BaJie.age);
实例方法
- 在类中直接定义的方法为实例方法,没有任何关键字的修饰
- 这种方法只能在类实例化之后进行使用
class BaJie{
name = "BaJie"
age = 18
sayName(){
console.log("八戒")
}
}
// 通过类直接访问
BaJie.sayName() // 错误的访问方法
console.log(BaJie.age); // 错误的访问方法
// 同样,实例化之后也是可以访问的
const bajie = new BaJie()
bajie.sayName()
console.log(bajie.name);
相关文章
- ADO.NET数据库应用开发_ExtendedProperties属性
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
- (《机器学习》完整版系列)第4章 线性模型——4.4 连续变量的决策树(以属性为轴的坐标系)
- 【Vue】【子组件】调用【父组件】参数,props属性值【动态】调用的两种方法(图文+完整代码)
- H5新属性FileReader实现选择图片后立即显示在页面上
- React-Native 之 GD (五)属性声明和属性确认 及 占位图
- DOM ------ 修改元素样式属性的两种方法
- [转]Ext.grid常用属性和方法
- Win7 DCOM 配置中我的电脑出现红色箭头并且无属性显示的解决方法
- 常用方法和属性列表
- iOS 运行时添加属性和方法
- MPMoviePlayerController属性方法简介
- iOS修改声明为readonly的属性值
- Spring Boot的属性配置
- Qt编写控件属性设计器7-串口采集
- Qt属性系统
- EF Code First导航属性一对一关系中注意点及配置方法
- spring的对象属性相同(类型,名字)拷贝
- Vue.set 向响应式对象中添加响应式属性,及设置数组元素触发视图更新
- 渲染属性 景深 最大尺寸 blender
- 对象不支持“abigimage”属性或方法
- 无法识别的属性“targetFramework”。请注意属性名称区分大写和小写。错误解决的方法
- Django学习路19_is_delete属性,重写类方法,显性隐性属性
- iOS - 数组字典模型根据模型属性key排序
- input属性placeholder在iOS中显示不完整的解决方法
- C#在方法或属性中使用sealed时的操作与原理