通过对象的get set 来实现计算属性
const obj = {log: ['a', 'b', 'c'],get latest() {if (this.log.length === 0) {return undefined;}return this.log[this.log.length - 1];}};console.log(obj.latest);// expected output: "c"
计算属性是一种伪属性
删除 delete obj.latest;
Object.defineProperties
(看JS对象2的文章)
vm = new Vue({data: myData})
Vue是一个函数
让vm成为myData的代理
对myData的所有属性进行监控
myData变了,vm知道,然后可以调用render(data)
Vue.set
如果一个属性没有在data中定义过,那么就没法进行监听,没有办法进行响应式
解决办法:在method修改某个属性(未定义),使用Vue.set
var vm = new Vue({el:'#test',data:{//data中已经存在info根属性info:{name:'小明';}}});//给info添加一个性别属性Vue.set(vm.info,'sex','男');
Vue.set和this.set
新增key
自动创建代理和监听
触发UI更新
this.$set(this.object, ‘m’, 1)
Vue.set()和this.$set()
官方响应式原理
https://cn.vuejs.org/v2/guide/reactivity.html
对于已经创建的实例,Vue 不允许动态添加根级别的响应式 property
