现在我写我自己的JS库和我有点混淆了这个写代码:为什么绑定工作的时候通话和应用不?
var par = document.querySelector('#par');
Element.prototype.fadeIn = function() {
this.style.opacity = 0;
\t var that = this;
var last = +new Date();
var tick = function() {
\t console.log(this);
this.style.opacity = +this.style.opacity + (new Date() - last)/400;
last = +new Date();
if (+this.style.opacity < 1) {
(window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
}
};
tick = tick.bind(that);
\t tick();
};
par.fadeIn();
<p id="par">123</p>
此代码工作的很好,但如果我们tick.apply(即)而不是绑定 - 它不起作用!有人可以解释我为什么吗?
因为'bind'和'apply'做了完全不同的事情!? 'bind'只是将上下文绑定到一个函数,而'apply' ***立即用上下文调用该函数。 – deceze
我认为有必要说,适用,需要两个参数,第一个参数是范围或上下文,第二个参数是与参数 – Raulucco
这是不适用于调用。如果我们没有参数 - 我们不需要申请或致电 –