JavaScript中两段类代码的区别及实例对象差异探究
两段JavaScript代码的区别及实例对比
代码核心区别
- 类的复用性与可访问性:
第一段是匿名类的立即实例化,类定义后直接通过new (class {...})(...)生成实例,没有绑定到任何变量,后续无法再用这个类创建新实例,属于一次性使用的类。
第二段是命名类Student,类被赋值给Student变量,可重复调用new Student(...)创建多个同类型实例,复用性高,且在其定义的作用域内可被其他代码引用。 - 类的作用域范围:
第一段的匿名类仅存在于当前实例化表达式的作用域中,外部无法直接引用该类的构造函数;第二段的Student类在其定义的作用域(如全局或函数作用域)内是公开可访问的。
实例对象x和y的差异
从实例的属性、行为来看,两者无本质功能差异:
- 两个实例都包含
firstName和lastName实例属性,属性值为各自传入的参数; - 两者都是
Object的实例,调用x instanceof Object和y instanceof Object均返回true; - 细微差异:
x.constructor.name为空字符串(因类是匿名的),y.constructor.name为"Student";- 可以直接通过
y instanceof Student判断实例类型,但无法直接写出x的类构造函数来做instanceof判断(只能通过x instanceof x.constructor)。
内容的提问来源于stack exchange,提问作者The beginner guy
相关产品推荐
相关产品推荐

