这段代码看不懂,求解答一下
var that = this; var next = function(){ return this.next.apply(that,arguments) }.bind(this) 这段代码实现的是什么功能,看不懂,有大神解答一下吗
var that = this; var next = function(){ return this.next.apply(that,arguments) }.bind(this) 这段代码实现的是什么功能,看不懂,有大神解答一下吗
2016-01-10
pageA.prototype.run = function(callback){ var that = this; var next = function() { return that.next.apply(that, arguments) }.bind(that);
这样好理解一点,其实这里this,that都一样,因为next方法在下面马上要调用了,所以在这个方法内作用域this和that都一样;这个this指代的是pageA()的实例,next()函数的意思就是,调用pageA()的next方法作用与新的对象上(但that还是pageA本身),并且使用新的参数;然后再将返回的方法改变一下指针,变成that(但还是pageA本身),然后运行下。
pageA.prototype.run = function(callback){ var that = this; var next = function() { return this.next.apply(this, arguments) }.bind(this);
用人话说就是,bind的this(你当成that好了,就是外层函数的this)代替了next匿名函数中的this,然后在调用变成that的next方法作用于that自身并且使用next匿名函数的新参数。
var that = this; var next = function(op) { return that.next(op); };
所以你发现,我把代码改成上面这样竟然也能完美运行!无非就是调用了一下pageA的next方法嘛!
所以作者只是在花样晒技术,被玩死的内存君表示哭晕在厕所。
var next = function(op) { return this.next(op); }.bind(this);
你还可以这样玩。
这是个玩弄指针和颠来倒去apply、bind的问题,对了,还有一个call方法。
举报