2017年12月

call和applyobj.call(thisObj, arg1, arg2, ...); obj.apply(thisObj, [arg1, arg2, ...]); 两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。绑定后会立即执行函数。唯一区别是apply接受的是数组参数,call接受的是连续参数。function add(j, k){ return j+k; } function sub(j, k){ return j-k; } 我们在控制台- 阅读剩余部分 -

因为嫌console.log()的写法太繁琐,想将其简写为log()。 我最初是这样写的: var log = console.log; log(..); 结果输出为:TypeError: Illegal invocation 谷歌一番之后在Stack Overflow上找到这个答案:var log = console.log.bind(console); 看到这个答案后,突然眼前一亮,因为我恰好刚刚在《You Don't Know JS》系列中读到过相关内容。虽然SO上只有答案没有解释,但是读过的内容瞬间在大脑中盘旋,帮我理解了这种写法的原理。刚刚学过的内容派上了用场,- 阅读剩余部分 -