js可以通过解构后得到的属性获取这个被解构的对象吗?//创建一个对象objletobj={a:"Bob",b:newDate().toLocaleTimeString(),c:function(){console.log(this.a)}}//结构得到它的属性alet{a}=obj//那么有没有什么方法可以把这个完整的obj对象,通过解构后的a,表示出来呢?//下面是我的一些愚蠢的尝试console.log(a.__proto__)//[String:'']console.log(a.constructor)//[Function:String]console.log(a.__proto__.constructor)//[Function:String]还有我发现解构赋值之后,你再对原对象的值进行修改不会影响解构得到的值let{a}=objobj.a="Jack"//修改原对象的值console.log(a)//Bob所以说解构赋值其实是重新创建了一个变量a,然后在解构的同时把值复制过来了吗?如果是这样,那确实无法从a来重新获得obj了。对了,js本身(或者说所有编程语言)就是无法用一个对象的某个属性,重新又逆向得到这个对象的吧?求大牛解答一下
2 回答
大话西游666
TA贡献1817条经验 获得超14个赞
从a获得obj是肯定不行的通过修改obj.a影响a是可以做到的。首先你要明白引用赋值和传值赋值,修改代码letobj={a:[1,2,3],b:{xx:1}}let{a,b}=obja.push(4)b.xx=2;console.log(obj.a)//[1,2,3,4]console.log(obj.b)//{xx:2}你如果企图直接b=1来改obj.b的值,那是不可能的,因为之前b和obj.b只是指向同一个内存地址,当b=1后,b指向的位置改变了,但是obj.b的位置没变.而采用我上面代码的方式,就是改变那个地址的值,所以他们都会同时改变.
慕容森
TA贡献1853条经验 获得超18个赞
解构,不就是定义变量吗。例如vara=obj.a,当你改变obj.a时(此处a是普通数据,非引用数据),a肯定不会被改动的。而且a没有任何属性指向原对象obj,你多看下js的数据结构就了解了
添加回答
举报
0/150
提交
取消