<script>
function person() {
return {
name:"a",
age:22
}
};
var obj1 = person();
var obj2 = person();
obj1.name = 'b';
console.log(obj1); // b 22
console.log(obj2); // a 22
</script>
稍微做下更改
<script>
obj = {
name = a
age = 22
}
function person() {
return {
obj
}
};
var obj1 = person();
var obj2 = person();
obj1.name = 'b';
console.log(obj1); // b 22
console.log(obj2); // b 22
</script>
总结:第一个示例中每调用一次函数都返回一个新的对象,
而在第二个示例中所共用一个对象。
所以,在改变其中一个对象某一属性的值时,第一个示例中的两个对象不会相互影响,而第二个示例中则是相互影响的。
Object是引用数据类型,如果不用function返回,每个组件的data都是内存的同一个地址,一个数据改变了其他也改变了;
(引用数据类型--对堆内存地址的映射)
JavaScript只有函数构成作用域,data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响。