通过对象的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