https://vuejs.org/v2/guide/co...尝试还原场景:一个构造函数,传入相同参数,使用对象时创建多个实例constmyself={firstname:'wei',lastname:'chen'}functionTestFunc(obj){this.person=obj}constinstance1=newTestFunc(myself)constinstance2=newTestFunc(myself)instance1.person.firstname='li'instance2.person.lastname='siyuan'myself.firstname='random'console.log(myself)console.log(instance1,instance2)打印结果如下:从上图可以看出,myself,instance1.person,instance2.person指向同一个对象,并且变了就会变。根本原因是js是对象的引用传递。同理,如果Vue中组件的data选项是一个对象,那么实例$data指向同一个对象。使用函数时functionmyself(){return{firstname:'wei',lastname:'chen'}}functionTestFunc(func){this.person=func()}constinstance1=newTestFunc(myself)constinstance2=newTestFunc(我自己)instance1.person.firstname='li'instance2.person.lastname='siyuan'console.log(instance1,instance2)console.log(myself())打印结果如下:从上图可以看出,通过函数生成了不同的对象,属性的改变会不再影响对方函数自己(){return{firstname:'wei',lastname:'chen'}}constobj1=myself()constobj2=myself()console.log(obj1==obj2)//false为什么vue-component的data属性必须是函数?https://axiu.me/coding/why-vu…
