現在我寫我自己的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
這是不適用於調用。如果我們沒有參數 - 我們不需要申請或致電 –