# 34、高级编程技巧
# 柯里化函数思想
TIP
是一个JS
预先处理的思想,利用函数执行可以形成一个不销毁的私有作用域的原理,把需要预先处理的内容都存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预先存储的处理过的值进行相关的操作处理即可;
- 如模拟原生
bind
方法:
Function.prototype.myBind = function (context) {
context = context || window;
var _this = this;
var outArg = [].slice.call(arguments,1);
if( 'bind' in Function.prototype ){
return this.bind.apply(this,arguments);
}
return function () {
let innerArg = [].slice.call(arguments);
_this.apply(context,outArg.concat(innerArg));
}
};
- 模拟原生
call
方法
Function.prototype.myCall = function(context){
context = context || window;
//改变this指向
context.fn = this;
//获取除了上下文以外的参数;
var arg = Array.from(arguments).slice(1);
var res = context.fn(...arg);
delete context.fn;
return res;
}
- 模拟原生
apply
方法
Function.prototype.myApply = function(context,ary){
context = context || window;
ary = ary || [];
context.fn = this;
var res = context.fn(ary);
delete context.fn;
return res;
}
← 33、任务队列 35、浅拷贝与深拷贝 →