前言:
在开发小程序或js时,经常需要使用var,即=this一开始觉得没用(原谅我的无知),后来从面向对象的角度理解。下面简单说明一下我自己的理解,欢迎指正和批评。
代码示例:
Page({ data: { test:10 },testfun1: fun(){ console . log(this . data . test)//10 fun test fun 2(){ console . log(this . data . test)//undefined } test fun 2()},})this . data . test的第一个打印结果是10,因为它指向包含自定义函数test fun 1()的Page对象。
事实上,第二个print语句将报告一个错误。原因是在函数testfun2()中,这个的点发生了变化,没有数据属性,所以会出现一个错误:无法读取undefined的属性‘data’;
解决方案是复制这个的一个副本,并指向变量,这样尽管在函数执行过程中发生了变化,但它仍然指向前一个对象。
test fun 1: function(){ var that=this console . log(this . data . test)//10 function test fun 2(){ console . log(that . data . test)//10 } test fun 2()},onload : function(){ this . test fun 1();}编译后未报错,结果正常打印;
让我们举一个更清楚的例子:
onload : function(){ var test var={ name : ' zxin ',test fun : function(){ console . log(this . name);} } testvar . test fun 3();}编译后输出结果:zxin。这个. name指的是testvar对象,testfun3()也属于testvar对象。
总结:
众所周知,这是指当前对象,它只是一个指针。真正的对象存储在堆内存中。这一点将在程序执行过程中改变。因此,如果需要在函数中使用全局数据,则需要将其适当地复制到变量中。
以上就是为什么我们在边肖介绍的微信小程序中使用var那=this。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!