vue init state
2018-08-14 本文已影响0人
安石0
export default {
name: 'app',
components: {
HelloWorld
},
data(){
return {
msg: 'zlj'
}
},
methods: {
sayMsg () {
}
},
computed: {
msg2(){
return 'msg2 is : ' + this.msg
}
},
mounted(){
console.log(this.msg)
console.log(this.sayMsg)
console.log(this.msg2)
}
}
以写在不同的vm不同的属性里面,但是均可通过this[key]访问到
比较简单,用了Object.defineProperty
var myVue={
data:{
name:'zlj'
},
methods:{
say:function(){
console.log('nihao')
}
},
computed:{
getName:function(){
return 'zlj'
}
}
}
function proxy(target,sourceKey,key){
sharedPropertyDefinition.get = function proxyGetter () {
return this[sourceKey][key]
}
sharedPropertyDefinition.set = function proxySetter (val) {
this[sourceKey][key] = val
}
Object.defineProperty(target, key, sharedPropertyDefinition)
}
var keys1 = Object.keys(myVue.data)
var i =keys1.length
while(i--){
key = keys1[i]
proxy(myVue, 'data',key)
}
var keys2 = Object.keys(myVue.methods)
var i =keys2.length
while(i--){
key = keys2[i]
proxy(myVue, 'methods',key)
}
var keys3 = Object.keys(myVue.computed)
var i =keys3.length
while(i--){
key = keys3[i]
proxy(myVue, 'computed',key)
}
const sharedPropertyDefinition = {
enumerable: true,
configurable: true
}