<body>
<div id="app">
<button @click="test1">button1</button>
<button @click="test2">button2</button>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
itemArr:['aaa','bbb','ccc'],
test1:function(){
console.log(this.itemArr);
// console.log(app.itemArr);
}
},
methods:{
test2:function(){
console.log(this.itemArr);
// console.log(app.itemArr);
}
}
})
</script>
</body>
向各位大神请教个问题,
方法test1,test2 分别写在data 和 methods里。
现在打印的话,写在test1的undefined,test2正常打印。
都是function(){下的this},为什么test1是undefined呢?
还有就是,如果把this,替换成app.itemArr 2个就都能打印了。
又是为什么呢
谢谢!
test1、test2不作处理的话,里面的this都会指向windows,但是vue在初始化数据的时候,把methods中的方法用bind做了一层封装,使其里面的this指向vm(组件实例)