<scripttype="text/javascript">// el元素的第一种写法:newVue({el:'#app',data:{}})// el元素的第二种写法:const v =newVue({data:{}})
v.$mount('#app')// 第二种要灵活一点,下面举例:等待1s钟,才关联元素显示对象数据const v =newVue({data:{}})setTimeout(()=>{
v.$mount('#app')},1000)</script>
<scripttype="text/javascript">// data的第一种写法:对象式newVue({el:'#app',data:{}//data需要对象,就执行在后面写一个对象})// data的第二种写法:函数式,写组件时必须使用第二种const v =newVue({//细节:Vue实例帮忙调用这个function,返回对象data:function(){//data需要对象,就写一个函数返回一个对象
console.log(this)//这里的this就是Vue实例对象return{name:{}}}})
v.$mount('#app')//第二种方式的简写,(一般在对象中写function都可以简写)const v =newVue({//细节:Vue实例帮忙调用这个function,返回对象data(){//data需要对象,就写一个函数返回一个对象
console.log(this)//这里的this就是Vue实例对象return{name:{}}}})
v.$mount('#app')</script>
六、Vue数据代理原理:Object.defineproperty()
6.1 Object.defineproperty()的使用:
Object.defineProperty(person,'age',{
value:18
})
6.2 Object.defineproperty()基本配置项:
let num = 18
let person = {
name:'张三',
sex:'男'
}
Object.defineProperty(person,'age1',{
value:18,
enumerable:true,//控制属性是否可以枚举,默认false
writable:true,//控制属性是否可以被修改,默认false
configurable:true,//控制属性是否可以被删除,默认false
//上面4项是普通的配置项,下面是高级配置项
})
6.3 Object.defineproperty()高级配置项(重要):get、set
let num = 18
let person = {
name:'张三',
sex:'男'
}
Object.defineProperty(person,'age1',{
// value:18,
// enumerable:true,//控制属性是否可以枚举,默认false
// writable:true,//控制属性是否可以被修改,默认false
// configurable:true,//控制属性是否可以被删除,默认false
//上面4项是普通的配置项,下面是高级配置项:当有人读取关联对象person的age1属性时,get函数(getter)就会被调用,且返回值是age1的值;
get:function(){
return num
},
//当有人修改关联对象person的age1属性时,set函数(setter)就会被调用,且会收到是age1的被修改的具体值 即:value;
set:function(value){
num = value
}
})