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;
}
我们在控制台- 阅读剩余部分 -
(function (factory) {
if (typeof define === "function" && define.amd) {
define([ "jquery" ], factory);
} else {
factory(jQuery);
}
}(function ($) {
$.fn.slides = function (options) {
var settings = $.extend({
- 阅读剩余部分 -
因为嫌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上只有答案没有解释,但是读过的内容瞬间在大脑中盘旋,帮我理解了这种写法的原理。刚刚学过的内容派上了用场,- 阅读剩余部分 -