在开发小程序的时候遇到了一个问题,使用 this.data 却获取不到数据。原来我忘记了javascript 语言中 this关键字的用法了。在javascript语言中,this代表着当前的对象,它在程序中随着执行的上下文随时会变化。在我用的时候函数对象已经发生了变化。所以已经不是原来的页面对象了。自然就没有了data属性。所以我们有了这个重要的语句:
var that=this//把this对象复制到临时变量that.
就是将当前的this对象复制一份到that变量中。这时候我们使用that 就不会找不到原来的对象了。
console.log(that.data);//使用that.data 属性
这样做有什么意义呢?比如下面
$('#test').click(function(){
//this是被点击的#test
var that = this;
$('.test').each(function(){
//this是.test循环中当前的对象
//that仍然是刚才被点击的#test
});
});
可以看到,this对象在程序中随时会改变,而var that=this之后,that没改变之前仍然是指向当时的this,这样就不会出现找不到原来的对象。