JS基础类型的属性赋值问题

xiaoxiao2021-03-01  38

参考文章: https://blog.csdn.net/yiifaa/article/details/54341112

在Javascript中,变量的类型一旦声明为基础类型,如果再为基础类型的变量添加属性,则其新建的属性不可存储,会自动销毁,基本流程如下:  1. 首先将基础类型临时转换为Object类型,并备份好基础类型的值;  2. 为Object类型添加属性;  3. 属性赋值完成后,再将Object转换为基本类型,并恢复为原值;

所以,整体来说,为基础类型添加属性的感觉就像是幻影数据,赋值完成后,就会自动销毁临时创建的对象,相关代码如下:

// 将对象声明为number类型 var counter = 0; // 为counter添加属性 counter.name = 'yiifaa'; // 输出为undefined console.log(counter.name) // 输出为number typeof(counter) // 输出为0 console.log(counter) // 对象中的引用也是如此 var user = { // 声明为boolean类型 enabled : true } // 为enabled添加属性 user.enabled.time = Date.now(); // 依旧输出为undefined console.log(user.enabled.time) // 依旧输出为bool console.oog(user.enabled) //基本类型赋值属性 var counter = 0; counter.name = '11'; console.log(counter.name);//undefined console.log(typeof(counter)); //number //引用类型赋值基本类型 var testObj = {}; testObj['name'] = 'aaa'; console.log(typeof(testObj)); //object console.log(testObj['name']); //aaa testObj = 12; console.log(testObj); //12 console.log(typeof(testObj)); //number console.log(testObj['name']); //undefined

将引用类型赋值为基础类型,则不会出现幻影数据。 

 

转载请注明原文地址: https://www.6miu.com/read-4149967.html

最新回复(0)