You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中类是否存在自身实例指针,可省去额外实例创建函数?

问题解答

完全可以省去自定义的CreateBanana工厂函数,JavaScript类的构造函数constructor中,this关键字默认就指向当前正在初始化的类实例,也就是你要的类似“self”的实例指针,直接把this推入存储数组即可。

实现代码

var BananaInstances = []

class Banana{
    constructor() {
        // 实例属性需要通过this赋值,否则会变成全局变量
        this.size = "huge"
        // 直接将当前新创建的实例推入数组
        BananaInstances.push(this)
    }
}

// 直接new就会自动把实例存入数组,不需要额外调用工厂函数
const sweetBanana = new Banana()
const anotherBanana = new Banana()

console.log(BananaInstances.length) // 输出2,两个实例都已自动存入

优化写法(避免全局变量污染)

你还可以把实例存储数组作为类的静态属性挂载,不需要额外声明全局变量,代码更整洁:

class Banana{
    // 静态属性属于类本身,所有实例共享
    static Instances = []
    constructor() {
        this.size = "huge"
        Banana.Instances.push(this)
    }
}

new Banana()
new Banana()
console.log(Banana.Instances.length) // 输出2

内容的提问来源于stack exchange,提问作者Inside_A_Matrix_Inside_A_Matri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 13:15:01