¿Cuál es la diferencia entre vm. $ Set y Vue.set?

He leído y leído cuidadosamente los documentos de Vue"Reactividad en profundidad" y la API paravm. $ set yVue.set pero todavía estoy teniendo dificultades para determinar cuándo usar qué. Es importante para mí poder distinguir entre los dos porque en mi proyecto actual de Laravel, estamos estableciendo muchas propiedades en objetos dinámicamente.

La distinción en los documentos parece estar entre el lenguaje que vm. $ Set es "Para la instancia de Vue", mientras que Vue.set es "Para objetos de datos simples" y que Vue.set es global:

Sin embargo, hay formas de agregar una propiedad y hacerla reactiva después de que se haya creado una instancia.

Para las instancias de Vue, puede usar el método de instancia $ set (ruta, valor):

vm.$set('b', 2)
// `vm.b` and `data.b` are now reactive

Para objetos de datos simples, puede usar el método global Vue.set (objeto, clave, valor):

Vue.set(data, 'c', 3)
// `vm.c` and `data.c` are now reactive

Finalmente, me preguntaba si la tercera "opción" de hacer lo anterior (que es para agregar varias propiedades al mismo tiempo) podría usarse como un sustituto equivalente de cualquiera de las 2 opciones anteriores (agregando solo 1 propiedad en lugar de múltiples) ?

A veces es posible que desee asignar una serie de propiedades a un objeto existente, por ejemplo, utilizando Object.assign () o _.extend (). Sin embargo, las nuevas propiedades agregadas al objeto no desencadenarán cambios. En tales casos, cree un objeto nuevo con propiedades tanto del objeto original como del objeto mixin:

// instead of `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })

Respuestas a la pregunta(1)

Su respuesta a la pregunta