刚才举的例子不够清晰,那我再举一个吧
wxml
< view bindtap = "tapTab" ></ view > |
js
class Home { tapTab() { console.log( "tab" ); } onPullDownRefresh() { console.log( "refresh" ); } onReachBottom() { console.log( "bottom" ); } onLoad() { console.log( "onLoad" ); } } Page( new Home()); |
请官方人员先不要急着标记为已解决。
按照上一个帖子里哥们说的意思事件不能定义到原型里(https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=512271115&docid=a5d216e91ba2550a23ad87b3044ef841)
,好 那为什么onLoad会执行呢,请给我一个解释
这个 回答 是正确的
但是为什么onload 或者 onshow 能执行呢?
因为 onload onshow 是小程序框架 “明白” 的方法,那么在相应的生命周期中就会去调用这个方法,而别的又不能枚举到,框架又不知道,自然是找不到的了
从官方的角度来说,也很欢迎开发者热情反映问题,这样大家都能从中汲取到知识,学习成长。
这里的话是这样的:
当实例化Page的时候,传入一个对象作为参数。
先检查该对象的key有没有预先定义的保留字
用一个预先存在的方法名列表(eg:onLoad,onShow等等)检查其中有无关于页面lifeCycle的方法
使用for in迭代取对象中的自定义方法
回到你的问题:
class定义的原型方法的propertyIsEnumerable为false,无法使用任何迭代接口遍历到
至于onLoad这种有关页面lifeCycle的方法,是直接使用object[key]的方式去调用,自然就能调用到
最后,请注意社区管理规定有提到,注意不要使用不文明的语言对他人进行负面评价
以上。