call bind的实现以及数组常用方法
1.call 实现(apply 类似)
Function.prototype.call= function(context){
context = context || window;
context.fn = this;
let args =[];
for(let i=1;i<arguments.length;i++){
args.push('arguments[' + i + ']');
}
var result = eval("context.fn( " + args + ")"); // args 会调用toString()方法
delete context.fn; “arguments[1],arguments[2]”
return result;
}
2.bind 实现
Function.prototype.bind = function(context){
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;
}
3.array的几个常用方法
forEach (遍历数组中的元素)
[1,2,3].forEach(function(item,idx,arr){ //item为每个元素idx为当前元素索引 arr 为当前数组
console.log(item + "--" + idx );
})
map (遍历数组 通过返回的值得到一个新的数组)
let mapArr = [1,2,3].map(function(item,idx,arr){
return item *item;
})
console.log('mapArr---------:',mapArr) // mapArr---------: (3) [1, 4, 9]
filter(遍历数组 将返回为true的元素组成新的数组)
let filterArr=[2,3,4].filter(function(item,idx,arr){
return item %2 ==0;
})
console.log("filterArr----------------:",filterArr) // filterArr----------------: (2) [2, 4]
every(遍历数组 每个元素符合条件返回true时 最终结果才为true)
let everyBool = [1,2,3].every(function(item,idx,arr){
return item >=1;
})
console.log("everyBool----------:",everyBool ) // everyBool----------: true
some(遍历数组 有一个元素符合条件返回true时 最终结果便为true)
let someBool = [1,2,3].some(function(item,idx,arr){
return item >=3;
})
console.log("someBool----------:",someBool) // someBool----------: true
call bind的实现以及数组常用方法的更多相关文章
- javascript中数组常用方法总结
原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString ...
- javascript 数组 常用方法
前言 学学忘忘 闲来做个笔记 整理下数组常用方法. Array 数组常用方法 创建数组的基本方式有两种 1.第一种是使用Array构造函数, var arr = new Array(); ...
- Object-c的数组常用方法
Object-c的数组常用方法 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @a ...
- ES6中的数组常用方法
数组在JS中虽然没有函数地位那么高,但是也有着举足轻重的地位,下面我就结合这ES5中的一些常用的方法,与ES6中的一些方法做一些说明和实际用途.大家也可以关注我的微信公众号,蜗牛全栈. 一.ES5中数 ...
- JavaScript 数组 常用方法(二)
写在前面:续接上篇 JavaScript 数组 常用方法 数组常用方法第二弹来了: some && every 描述: every()与some()方法都是JS中数组的迭代方法. so ...
- JavaScript数组常用方法解析和深层次js数组扁平化
前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...
- 第一百一十四篇: JS数组Array(三)数组常用方法
好家伙,本篇为<JS高级程序设计>第六章"集合引用类型"学习笔记 1.数组的复制和填充 批量复制方法 copyWithin(),以及填充数组方法fill(). 这两 ...
- Jsの练习-数组常用方法
1. join() 方法: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- call,apply,bind与es6的数组扩展运算符...
js中每一个Function对象都有一个apply个一个call方法: function.apply(thisObj,[argArray]); function.call(thisObj,arg1,a ...
- JavaScript基础之数组常用方法
目录 JS 数组常用API 常用属性 常用方法 常见方法语法解释 from方法 isArray concat every fill filter find forEach indexOf join k ...
随机推荐
- VMware-SSH协议的认证方式
SSH1协议支持非对称密钥认证方式.口令认证,无法保证连接的完整性. SSH2协议支持SSH1协议支持的所有认证方式,增加数据保密性. 基于主机的认证方式[!不安全!] 当本地计算机收到执行远程命令的 ...
- mysql的数据操作
INSERT [INTO] 表名 [(字段名1,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... 说明:主键列是自动增长,但是在全列插入时 ...
- AI步枪
最近正在看利用深度学习进行图像处理的资料,神经网络的确是太枯燥了,看不下去了就刷会手机.这几天推荐给我的新闻都是漂亮国又发生校园枪击事件了,不知道推荐算法是怎么认定我对这个话题感兴趣的.这算是老生常谈 ...
- python 操作配置文件(configparser模块)
用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser 配置文件信息: [DEFAULT] ServerAliveInterval = 45 Com ...
- 前端面试题 10 个「有用」JavaScript 代码片段
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情 降低阅读负担,启发创作心智,轻松学习 JavaScript 技巧,日拱一卒,jym,冲~ 注:本篇可能更 ...
- Easyui 表格列数据合并!
//datagrid调用列子 onLoadSuccess: function (data) { $(".datagrid-header-row").css("text-a ...
- oracle 导出导入表 不到出指定表
导出多个表 exp LSXYYSZHMRMS/******@PK99SERVICE file=d:\fuhcx.dmp tables=(fhcxgxxx,fhcxjcxx,fhcxlbxx,fhcx ...
- 《Toward Fast, Flexible, and Robust Low-Light Image Enhancement》
1.(23条消息) 图像增强评价标准EME和matlab代码_eme指标_zhonglingyuxiuYYX的博客-CSDN博客 2.nn.moduleList 3.LOE:lightness ord ...
- CCIE DC Multicast Part 2.
Hi Guys! In my last blog post, we had a quick look at multicast and a more in depth look at how PIM ...
- 修改docker0 中的inet
由于在服务器使用默认的172开头的ip,可能会跟别人的产生冲突,则就需要重新配置ip 1.创建daemon.json vi /etc/docker/daemon.json (不能打空格:用tab缩进) ...