vueシリーズ:dataはなぜオブジェクトを返す方法でなければならないのか

3718 ワード

結論
オブジェクトは参照データ型なので、オブジェクトと書くと、このコンポーネントは複数の場所で参照され、1つの場所の値を変更するだけで、別の場所の参照の値も変化し、混乱します.
オブジェクトを返す関数を使用すると、毎回新しいオブジェクト(Objectのインスタンス)が返されるため、参照アドレスが異なるため、この問題は発生しません.
例を挙げる
オブジェクトの方法:
var data = {
  x: 1
}
var vm1 = {
  data: data
}
var vm2 = {
  data: data
}
vm1.data === vm2.data // true,       

関数:
var func = function () {
  return {
    x: 1
  }
}
var vm3 = {
  data: func
}
var vm4 = {
  data: func
}
vm3.data() === vm4.data() // false,      

関数方式ではdataは同じ関数を指しますが、この関数の戻り値は毎回新しいオブジェクトです.
{x:1} === {x:1} // false
new Object({x:1}) === new Object({x:1}) // false