收藏
回答

创建Page实例时传入的自定义函数是如何拷贝的?

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();
  },
});
回答关注问题邀请回答
收藏
登录 后发表内容