let vm=new Vue({
el:'#app',//表示当前的vue实例挂载在哪个DOM节点上
data(){
return {
msg:''
//data中的数据是根据defineProperty进行监听的,所以是双向绑定的状态。
}
},
created(){
//钩子函数,在页面初始化是进行加载,一般放的是异步方法。
}
})
修改vm.msg是可以动态改变页面上渲染的值。
指令
是vue赋予的特殊功能意义的指令。
data中的双向绑定的数据,是在改数据上添加了set、get方法,在赋值和取值时都会触发。
let obj={},
let temp={},
Object.defineProperty(obj,'name',{
get(){
return temp['name']
},
set(value){
temp['name']=value;
}
})
引入第三方temp是用来做内部转化的,如果直接引用obj会导致栈溢出。
首先在初始化的时候,vue会循环data中的数据,依次增加get和set函数,这叫做数据劫持。
只有数据中有set和get才会有响应式的变化。
如果放在data中的是一个数组,那么当数组中某一项发生变化的时候,数组中没法直接刷新数据,
因为data没法给数组的每一项增加set和get方法,所以用$set方法,给对象强制加上响应式的属性。
异步------回调
回调是解决异步的一个方法。
function buy(callback){
setTimeout(function(){
let a= '1'
callback(a);
},2000)
}
function cookie(){
console.log('cookie')
}
最典型的异步是ajax回调
promise的出现是为了解决回调函数的恶心写法
首先promise是一个函数,用法
promise构造函数中传入的是一个exe执行器,意思是传入就执行。
let promise=new Promise((resolve,reject)=>{
if(/异步调用成功/){
resolve()
}else{
reject()
}
})
promise(()=>{}).then(function(value){
//sucess
},function(error){
//failue
});
promise().then(function(){
}).catch(function(){
})