function Test() {
this.options = { a: 1,b: 2 }
var { options } = this
options.a = 3
options.b = 4
var { a,b } = options
a = 5;
b = 6
console.log(options,a,b)
this.sec = { c: 2,d: {} }
var { sec } = this
var { c,d } = sec
c.d = 3
c.e = 4
d.d = 3
d.e = 4
console.log(sec,c,c.d,d)
this.third = { e: {},f:1}
var { third } = this
var { e,f} = third
e = 2
f={}
f.a=1
console.log(third,e,f)
}
var test = new Test;
结果:
{a: 3,b: 4},5,6
{c: 2,d: {d: 3,e: 4}},2,undefined,{d: 3,e: 4}
{e: {},f: 1},{a: 1}
将对象test的属性a赋值给新的变量b时:
1.如果赋值后新的变量b是对象(即a是一个对象), 那么 b的任一(任何)属性c改变时,都会引起a的改变。 但是将b重新赋值(无论是基本类型或对象), b发生改变,而a 不会变。
2.如果赋值后新的变量b是基本类型(即a是基本类型), 那么b无论发生任何改变,a都不会变。 如果b直接加属性c, 那结果无效(b.c===undefined) 。2.将b赋值成对象,再加属性c,那么b将会变化,并获得c属性。
这里要分清基本类型
与对象
的关系。 对于编写插件很有帮助。