微信小程序跨页面通信解决思路

Function.prototype.bind = function(that){ var fn = this var cb = function(){ var args = Array.prototype.slice.call(arguments) return fn.apply(that, args) } cb.fn = this return cb}

然后再稍微修改一下 off 方法里的判断条件

// remove specific callbacks...if (cb === fn || cb.fn === fn) {    callbacks.splice(i, 1)    break}...

在浏览器环境这种做法是可行的,但是在小程序侧则是失败的。因为我们定义的这些 function 在小程序里并不是 Function 的实例,那无论我怎样修改 Function 的 prototype 属性,function 并不会继承到。原因是小程序把 Function 给改写了:

//consoleFunction.toString()// "function (){if(arguments.length>0&&"return this"===arguments[arguments.length-1])return function(){return e}}"

优化方案