vue2
defineProterty
Object.definePropertyJS中的一个方法,常用来定义属性的,在Vue.2x中的数据代理,是通过此方法来实现的!
- 参数
 
| name | desc | 
|---|---|
| targetObj | 目标对象 | 
| add property | 添加的属性 | 
| options | 配置项 | 
- options 配置项
 
| key | valType | defaultVal | desc | 
|---|---|---|---|
| value | any type | ‘18’ or 18 or ‘年龄’ | 为目标对象定义的属性值 | 
| enumerable | Boolean | false | 控制属性是否可枚举,默认不能 | 
| writable | Boolean | false | 控制属性是否可修改,默认不可被修改 | 
| configurable | Boolean | false | 控制属性是否能被删除,默认不能 | 
| setter | Function | callback(val) | 设置新的属性值 | 
| getter | Function | - | 获取属性值 | 
- 使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22let number = 19
let targetObj = {
name: '李四',
sex: '男'
}
Object.defineProperty( targetObj, 'age', {
value: '18', // 设置的属性值
enumerable: true,
writable: true,
configurable: true,
set: function(val) {
// val 修改的新值
console.log('当有人修改了 age 属性时, 该函数被触发调用') // 值被改变了
number = val
},
get: function() {
console.log('当有人读取了 age 属性时,该函数被触发调用') //
return number
}
}) 
数据代理
定义
通过一个对象代理,去视图(==修改== or ==访问==)另一个对象中的属性
案例
1  | let obj1 = { x: 1 }  | 
Vue中的数据代理
vm 实例对象 可以视作为 以上案例的 ==obj2==,则 ==_data==可视作为 ==obj1==,当你视图去 ==访问== or ==修改== vm实例
[obj2]对象的属性时,则相应的 _data[obj1]对象下的属性值也会被修改!
1  | let vm = new Vue({  | 
MVVM模型
- ==MVVM== 视图模型,一种规范,其中 ==M==为
 [model]也就是模型数据,在vue中主要体现在==data==- ==VM== 则为
 [ViewModel]视图模型的意思,作用于model于view之间数据转换- ==V== 则为
 [view]视图,主要体现在<template>模板中,用来和用户做交互的
M - > data
VM - > vue实例
V -> html
 评论
