TypeScript/JavaScript array.find()返回值及对象引用问题咨询
TypeScript类实例引用问题解析
你的代码:
const addressFound: AddressPrimary = <AddressPrimary>(this.addressArray.find(addr => addr.id === id));
问题解答:
addressFound存储的内容
它存储的是this.addressArray中第一个满足addr.id === id条件的AddressPrimary类实例对象。这里的<AddressPrimary>是TypeScript的类型断言,仅用于告诉编译器该值的类型为AddressPrimary,不会改变运行时的实际值。是否指向类实例的引用
是的,它存储的是该类实例的内存引用地址。在JavaScript/TypeScript中,类实例属于引用类型,从数组中取出实例赋值给变量时,变量不会创建实例的副本,而是直接持有指向原实例的引用。
现象解释
你后续修改myAddress.id = 7时,addressArray中对应实例的id同步变化,核心原因是myAddress、addressFound和数组内的目标实例,全部指向内存中的同一个对象。修改任意一个引用指向的对象属性,都会直接修改原对象,所有关联的引用都会同步看到这个变化。
内容的提问来源于stack exchange,提问作者Moshik Amit
相关产品推荐
相关产品推荐

