如下两段代码,绕晕了代码1:
var event,arr;
event = {a:1};
arr = {};
arr['test'] = event;
event = {a:1,b:2} ; //既然arr.test存储的是event变量,为什么不会跟着event变化呢?
console.log(arr.test);输出=> {a:1}------------------------------代码2:
var event,arr;
event = {a:1};
arr = {};
arr['test'] = event;
event.b = 2; //为什么增加属性的方式就可以改变arr.test的值?
console.log(arr.test);输出=> {a:1,b:2}
var event,arr;
event = {a:1};
arr = {};
arr['test'] = event;
event = {a:1,b:2} ; //既然arr.test存储的是event变量,为什么不会跟着event变化呢?
console.log(arr.test);输出=> {a:1}------------------------------代码2:
var event,arr;
event = {a:1};
arr = {};
arr['test'] = event;
event.b = 2; //为什么增加属性的方式就可以改变arr.test的值?
console.log(arr.test);输出=> {a:1,b:2}
event = {a:1};
arr = {};
arr['test'] = event;
event = {a:1,b:2} ; //既然arr.test存储的是event变量,为什么不会跟着event变化呢?
console.log(arr.test);因为arr.test实际指向的event指向的那个object,event只是一个中介
重新定义event的时候,并没有影响arr.test实际指向的那个object
var event,arr;
event = {a:1};
arr = {};
arr['test'] = event;
event.b = 2; //为什么增加属性的方式就可以改变arr.test的值?
console.log(arr.test);同上,这时候修改了一开始指向的那个object,就影响了arr.test
比如一个简单的dom例子
var test = document.getElementById('test').innerHTML
然后你换掉test
test = 123
如果按照你说的是变量保存的话。那dom就会跟随的双向绑定一起变化了
所以他们只是赋值而已
event = {a:1, b:2} ; // 这句话导致了event的引用变了,本来指向对象{a:1},现在指向对象{a:1, b:2}代码2:
event.b = 2; // 这句话是不会改变event的引用的,本来指向对象{a:1},现在依然指向对象{a:1},并给对象{a:1}添加了个属性b