HTML
CSS
JS
- 手撕call、apply、bind
三兄弟接收的第一个参数都是要绑定的this指向。
apply的第二个参数是一个参数数组,call和bind的第二个及之后的参数作为函数实参按顺序传入。
bind不会立即调用,其他两个会立即调用。
call:
作用:改变了this指向,函数执行了。
实现:
Function.prototype.call2 = function (context) {
var context = context || window;
context.fn = this;
//将函数设为对象的属性
var args = [];
for(var i = 1, len = arguments.length; i < len; i++) {
args.push('arguments[' + i + ']');
}
var result = eval('context.fn(' + args +')'); //执行该函数
//用 eval 方法拼成一个函数
delete context.fn //删除该函数
return result;
}
- 原型 & 原型链
- this指向
- 继承方案
- new过程
- 深浅拷贝
- 防抖节流
- 数组判定方法
- 数组去重
- 垃圾回收
- 手撕Promise
- 事件循环