var target = {},
source = {
name: 'tom',
list: ['node', 'python']
};
target.name = source.name;
target.list = source.list;
source.list.push('php');
console.log(JSON.stringify(target)); // {"name":"tom","list":["node","python","php"]}
console.log(target.list === source.list); // true => target.list 引用了source.list
source.list = [1, 2, 3];
console.log(target.list === source.list); // false target.list 不再引用 source.list
// **第一个疑问**: 我的理解的是 source 新开了一个栈来存放 [1, 2, 3],这与target.list指向的不是同一个栈 所以才导致上述的结果 是吗?
// 问题:给一个对象的属性赋值:
var obj = { name: undefined };
obj.name = 'tom'; // **第二个疑问**: 这种方式都属性新增一个属性 而不是改变原name属性(准确来说应该是覆盖)
// **第三个疑问**: 那什么是改变原来的值呢? 像数组的 push 方法 => source.list.push('php');
烙印99
相关分类