在https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html文档中提到:
> 开发者可以添加任意的函数或数据到 Object
参数中,在页面的函数中用 this
可以访问。这部分属性会在页面实例创建时进行一次深拷贝。
实例对象是保存在逻辑层还是视图层?函数类型在初始化时如何拷贝的呢?下面的例子在总是返回false
let last = null;
Page({
sayHello(){
console.log('hello');
},
onLoad() {
console.log(last === this.sayHello);
last = this.sayHello;
},
});
按照上面的例子,函数每次都不一样,那为何下面的limit在第二次进入页面时仍然存在
function limit(fn) {
let canCall = true;
return function (...args) {
if (canCall) {
fn.apply(this, args);
canCall = false;
}
};
}
Page({
sayHello: limit(() => {
console.log('hello');
}),
onLoad() {
this.sayHello();
},
});