call bind的实现以及数组常用方法
2020-12-26 16:30
标签:数组 sel contex rgs push some 引用 array eval 1.call 实现(apply 类似) Function.prototype.call= function(context){ 2.bind 实现 Function.prototype.bind = function(context){ 3.array的几个常用方法 forEach (遍历数组中的元素) [1,2,3].forEach(function(item,idx,arr){ //item为每个元素idx为当前元素索引 arr 为当前数组 map (遍历数组 通过返回的值得到一个新的数组) let mapArr = [1,2,3].map(function(item,idx,arr){ filter(遍历数组 将返回为true的元素组成新的数组) console.log("filterArr----------------:",filterArr) // filterArr----------------: (2) [2, 4] every(遍历数组 每个元素符合条件返回true时 最终结果才为true) }) console.log("everyBool----------:",everyBool ) // everyBool----------: true some(遍历数组 有一个元素符合条件返回true时 最终结果便为true) let someBool = [1,2,3].some(function(item,idx,arr){ })
console.log("someBool----------:",someBool) // someBool----------: true call bind的实现以及数组常用方法 标签:数组 sel contex rgs push some 引用 array eval 原文地址:https://www.cnblogs.com/swiftF/p/13034585.html
context = context || window;
context.fn = this;
let args =[];
for(let i=1;i
}
var result = eval("context.fn( " + args + ")"); // args 会调用toString()方法
delete context.fn; “arguments[1],arguments[2]”
return result;
}
let self = this;
let proto = Array.prototype;
let args =proto.slice.call(arguments,1); // 调用bind方法传入的参数
function forBind(){};
forBind.prototype = this.prototype; // 考虑到通过中间对象引用当前方法的原型
let bindfun = function(){
let lateArg = proto.slice.call(arguments); // 调用bind后返回的方法传入的参数
self.apply(context,args.contact(lateArg));
}
bindfun.prototype = new forBind(); // 指向当前方法的原型
return bindfun;
}
console.log(item + "--" + idx );
})
return item *item;
})
console.log(‘mapArr---------:‘,mapArr) // mapArr---------: (3) [1, 4, 9]
let filterArr=[2,3,4].filter(function(item,idx,arr){
return item %2 ==0;
})
let everyBool = [1,2,3].every(function(item,idx,arr){
return item >=1;
return item >=3;
文章标题:call bind的实现以及数组常用方法
文章链接:http://soscw.com/index.php/essay/38387.html