Model
- View
-ViewModel
Model:
data
datos enView:
Análisis de plantillas->DOM
páginaViewModel:
Vue
objeto de instancia
vm
El contenido de puede ser Vue
todo el contenido del prototipo.
corredor de datosObject.defineproperty(参数1, 参数2, 参数3)
- Parámetro 1: objeto
- Parámetro 2: nombre del atributo
- Parámetro 3: elemento de configuración
Ejemplo de función: definir variables
let number = 18
let person = {
name = "zhangsan"
}
Ejemplo de función: corredor de datos
Object.defineProperty(person, 'age', {
get: function(){
return number
}
})
Características del agente de datos:
- No enumerable, no puede participar en el recorrido, solución:
enumerable
establezca el atributo entrue
, el valor predeterminado es falso - No modificable, solución:
writable
establezca el atributo entrue
, el valor predeterminado es falso - No se puede eliminar, solución:
configurable
establezca el atributo entrue
, el valor predeterminado es falso
Funciones de proxy de datos:
- Limita los datos y mira sus características.
get
Función: cuando se lee el atributo del parámetro 1 (objeto),get
se llamará a la función y el valor de retorno es el valor del parámetro 2 (nombre del atributo). Se llama a la funciónInvoke Property getter
de atributo de mapeo .get
getter
El setter se puede entender de la misma manera:
Al modificar el parámetro 2 (nombre de propiedad) del objeto, se llamará a la función de establecimiento y se recibirá el valor modificado.
Object.defineProperty(person, 'age', {
get: function(){
return number
}
set(value){
number = value
}
})
Ejemplos de uso de proxy de datos
let obj = {
x:100}
let obj2 = {
y:200}
Object.defineProperty(obj2, 'x', {
get(){
return obj.x
}
set(value){
return obj.x = value
}
})
Vue
corredor de datos
- Al
vm
leername
, ingresarvm.name
, llamargetter
, lo que se lee estávm._data.name
enname
- Al
vm
cambiarname
, cambiarvm.name
, llamarsetter
, lo que se cambia estávm._data.name
enname
Verificar vm._data
que esté en los parámetros de compilación.data
vm
Almacene data
los datos en vm._data
y vm._data
el secuestro de datos no se puede verificar directamente. El secuestro de datos tiene como objetivo lograr capacidad de respuesta.
let data = {
name = "zhangsan"
}
const vm = new Vue({
el: '#root',
data
})
Verifiablevm._data === data
Vue
Comprensión profunda del agente de datos
-
vm
Novm.name
, solo , pero se puede accedervm._data
a través del agente de datos mediante entradavm.name
vm._data.name
-
Sin un agente de datos, la interpolación debe escribirse como
{ {_data.name}}
-
vm
Consíguelo_data
, agrega un atributoname
,getter
léelo ,_data
modifícaloname
setter
_data
name