你还是我的快乐,好在不会勾起我的忧伤了~
各位宝宝,马上就要过中国年了,已经开启了放假模式了吗?放假了就好好的休息哈,该玩的时候玩、该学的时候学,就对了~
手写call
代码语言:javascript复制Function.prototype.myCall = function(context){
if(typeof this != 'function'){
throw New TypeError('Error')
}
let context = context || window
let args = [...arguments].slice(1)
context.fn = this;
let result = context.fn(...args)
delete context.fn;
return result;
}
手写apply
代码语言:javascript复制Function.prototype.myCall = function(context){
if(typeof this !=== 'function'){
throw new TypeError('Error')
}
context = context || window;
context.fn = this;
let result;
if(arguments[1]){
result = context.fn(...arguments[1])
}else{
result = context.fn()
}
delete context.fn
return result
}
手写bind
代码语言:javascript复制Function.prototype.myBind = function(context){
if(typeof this !== 'function'){
throw new Typeerror('Error')
}
const _this = this;
const args = [...arguments].slice(1)
// bind的返回值是一个函数
return function F(){
// 函数有两种调用方式,一种是new ,一种是直接调用
if(this instanceof F){
return new _this(...args, ...arguments)
}
return _this.apply(context, args.concat(...arguments))
}
}
愿我们有能力不向生活缴械投降---Lin