ES6之类的其他书写方式

ES6之类的其他书写方式

js 复制代码
const methodName="sayHello";
class Person{
    constructor(name, age, sex){
        this.name = name;
        //this.getAge();
        //this.setAge();
        this.age = age;
        this.sex = sex;
    }
    get age(){
        return this._age;
    }
    set age(age){
        if(typeof age !== "number"){
            throw new TypeError("age property must be a number");
        }else if(age < 0){
            age = 0;
        }else if(age > 1000){
            age = 1000;
        }
        this._age = age;
    }
    [methodName](){
        console.log(this.name,this.age,this.sex)
    }
}
const p1 = new Person("张三", 18, "男");
p1[methodName]()

这里是类的一些其他特点。

类的可计算成员名,和对象初始化的可计算属性类似,可以将成员名变成[]+表达式的形式。

getter和setter,在之前时期,我们可以使用函数的方式来进行 age 的读取和赋值的过程。但这种方式与属性的书写方式不一致,需要使用 p1.getAge() ,p1.setAge() 的方式。采用 getter 和 setter 可以直接写成属性的形式,p1.age , p1.age=10 。也可使用 Object.defineProperty 的方式书写。

静态成员是定义在构造函数的属性。无法通过实例对象访问。例如:

js 复制代码
class Chess{
    constructor(name){
        this.name = name;
    }
    static width = 100;
    static height = 100;
    static show(){
        console.log(this.name)
    }
}
console.log(Chess.width, Chess.height)
Chess.show()

使用 static 关键字可以定义静态属性,可以通过 console.dir() 查看。

字段初始化器

js 复制代码
class Test {
    a=1;
    b=2;
    print=()=> {
        console.log(this)
    }
}
// function Test() {
// }
// Test.prototype.print=function(){
//     console.log(this)
// }
const t1 = new Test();
const t2 = t1.print;
t2()

字段初始化器是指可以直接给成员赋值,这些成员会添加到构造器里。也可以赋值给一个方法,不过方法里的this指向存在问题。this会指向window,这时使用箭头函数可以使this永远绑定到对象上,虽然会造成一定的内存浪费。

类表达式,可以将类用在参数或返回值中。

js 复制代码
const test=class{
    print(){
        console.log(this)
    }
}
new test().print()
相关推荐
Icoolkj18 分钟前
VuePress 与 VitePress 深度对比:特性、差异与选型指南
前端·javascript·vue.js
^Rocky1 小时前
JavaScript性能优化实战
开发语言·javascript·性能优化
西陵2 小时前
Nx带来极致的前端开发体验——任务编排
前端·javascript·架构
笑鸿的学习笔记2 小时前
JavaScript笔记之JS 和 HTML5 的关系
javascript·笔记·html5
萌萌哒草头将军4 小时前
10个 ES2025 新特性速览!🚀🚀🚀
前端·javascript·vue.js
gnip4 小时前
http缓存
前端·javascript
JohnYan5 小时前
工作笔记 - 微信消息发送和处理
javascript·后端·微信
陈陈爱java6 小时前
Spring八股文
开发语言·javascript·数据库
@大迁世界6 小时前
用 popover=“hint“ 打造友好的 HTML 提示:一招让界面更“懂人”
开发语言·前端·javascript·css·html
烛阴6 小时前
【TS 设计模式完全指南】用工厂方法模式打造你的“对象生产线”
javascript·设计模式·typescript