underscore

是js封装的一个js库 库和框架是有区别的 mvc框架就是backbone就是依赖这个库
underscore就是定义了一个_( 下划线对象 ); 函数库的所有的方法都归属于这个对象 大致有五类
分别是:集合collection 数组array 函数function 对象object 工具utility ( 这里介绍一些简单的方法 )

框架和库的区别
库:就是js大量方法的集合
框架:是一种开发模式 如:mvc mvp mvm等 简称mv*

一、集合
集合就是伪数组 不存在数组的那些方法 假设我们需要使用数组的方法 就需要人为去封装 还需要考虑兼容性 underscore解决了这个问题
方法:
1.each( 直接加工 ): _.each(list, iteratee, [context]) 遍历list中的所有元素,按顺序用每个元素当做参数调用 iteratee 函数。

2.map( 加工后返回新的 ): _.map(list, iteratee, [context]) 通过对 list 里的每个元素调用转换函数。(iteratee迭代器)生成一个与之相对应的数组

3.find( 检测并返回第一个符合的 ): _.find(list, predicate, [context]) 在list中逐项查找,返回第一个通过predicate迭代函数真值检测的元素值。

4.filter( 检测并返回一个由符合规定的元素组成的新数组 ): _.filter(list, predicate, [context]) 遍历list中的每个值,返回所有通过predicate真值检测的元素所组成的数组。

二、数组
方法:
1.first( 截取数组中第一个元素 ): _.first(array, [n]) 返回array (数组)的第一个元素。传递 n参数将返回数组中从第一个元素开始的n个元素
2.last( 截取数组中最后一个元素 ): _.last(array, [n]) 返回array(数组)中最后一个元素。传递 n参数将返回数组中从最后一个元素开始的n个元素
3.initial( 删除数组中最后一个元素 ): _.initial(array, [n]) 返回数组中除了最后一个元素外的其他全部元素。 在arguments对象上特别有用。传递 n参数将从结果中排除从最后一个开始的n个元素
4.rest( 删除数组中第一个元素 ): _.rest(array, [index]) 返回数组中除了第一个元素外的其他全部元素。传递 index 参数将返回从index开始的剩余所有元素
5.object( 数组转对象 ): _.object(list, [values]) 将数组转换为对象。传递任何一个单独[key, value]对的列表,或者一个键的列表和一个值得列表

三、函数
方法:
1.bind: _.bind(function, object, *arguments)
2.delay( 指定时间之后执行函数 ): _.delay(function, wait, *arguments) 类似setTimeout,等待wait毫秒后调用function。如果传递可选的参数arguments,当函数function执行时, arguments 会作为参数传入
3.once( 只能调用一次 ): _.once(function) 创建一个只能调用一次的函数。重复调用改进的方法也没有效果,只会返回第一次执行时的结果
4.before: _.after(count, function) 创建一个函数, 只有在运行了 count 次之后才有效果

四、对象
方法:
1.keys( 返回键不带原型 ): _.keys(object) 检索object拥有的所有可枚举属性的名称
2.allKeys( 返回键带原型 ): _.allKeys(object) 检索object拥有的和继承的所有属性的名称
3.values( 返回值不带原型 ): _.values(object) 返回object对象所有的属性值
4.extend: _.extend(destination, *sources) 将source对象中的所有属性简单地覆盖到destination对象上,并且返回 destination 对象
5.clone: _.clone(object) 创建 一个浅复制(浅拷贝)的克隆object。任何嵌套的对象或数组都通过引用拷贝,不会复制

五、工具
方法:
1.times: _.times(n, iteratee, [context]) 调用给定的迭代函数n次,每一次调用iteratee传递index参数。生成一个返回值的数组
2.random: _.random(min, max) 返回一个min 和 max之间的随机整数。如果你只传递一个参数,那么将返回0和这个参数之间的整数
3.mixin: _.mixin(object) 允许用您自己的实用程序函数扩展Underscore
4.mow: _.now() 一个优化的方式来获得一个当前时间的整数时间戳。可用于实现定时/动画功能
5.template: _.template(templateString, [settings]) 将 JavaScript 模板编译为可以用于页面呈现的函数, 对于通过JSON数据源生成复杂的HTML并呈现出来的操作非常有用

详细内容请看:https://www.html.cn/doc/underscore/

从零开始的全栈工程师——underscore的更多相关文章

  1. 从零开始的全栈工程师——html篇1

    全栈工程师也可以叫web 前端 H5主要是网站 app 小程序 公众号这一块 HTML篇 html(超文本标记语言,标记通用标记语言下的一个应用.) “超文本”就是指页面内可以包含图片.链接,甚至音乐 ...

  2. 从零开始的全栈工程师——html篇1.2

    起名方式与CSS 一.起名方式(起名方式也叫选择器) 起名的目的是为了给标签添加属性 常见的3种选择器有 标签选择器   id选择器(使用的时候加#)    class选择器(使用的时候加.) 样式的 ...

  3. 从零开始的全栈工程师——MySQL数据库( Dos命令 ) ( phpstudy )

    MySQL是一个关系型数据库,存在表的概念.结构,数据库可以存放多张表,每个表里可以存放多个字段,每个字段可以存放多个记录. phpstudy使用终端打开数据库的命令行 密码: root 数据库 查看 ...

  4. 从零开始的全栈工程师——JS面向对象(复习)

    作用域 栈内存:js执行的环境堆内存:存放代码块的空间 存放方式 键值对形式存放 字符串的形式存放js在执行之前 浏览器会给他一个全局作用域叫window 每个作用域下都分为两个模块 一个是内存模块一 ...

  5. 从零开始的全栈工程师——js篇2.5

    数据类型与全局属性 js的本质就是处理数据 数据来自于后台的数据库所以变量就起到一个临时存储数据的这作用ECMAscirpt 制定了js的数据类型 一.数据类型 1.基本数据类型 基本数据类型就是简单 ...

  6. 从零开始的全栈工程师——js篇2.1(js开篇)

    JS开篇 一.js介绍 全称 javascript 但不是java 他是一门前台语言 而java是后台语言js作者 布兰登·艾奇 前台语言:运行在客户端的后台语言:跟数据库有关的 能干什么?    页 ...

  7. 从零开始的全栈工程师——html篇1.7

    position定位与表单 一.position 1.Position细说 Position:relative; Left:100px; Top:100px; Position:absolute; L ...

  8. 从零开始的全栈工程师——html篇1.5

    列表与边距探讨和行块 一.列表 1.无序列表(UL) 1)内部必须有子标签<li></li>2)天生自带内外边距 p也是自带 大家会发现用UL的时候内容前面会出现一个像这样的一 ...

  9. 从零开始的全栈工程师——html篇1.4

    背景与边框 一.背景(backgound) 1.背景颜色:background-color:red;(简写:background:color;) 备注:ie9以下给body设置background-c ...

随机推荐

  1. selenium滑动验证码操作

    1.首先要找到你要滑动的地方 2.调动鼠标事件按住不动 3.调整坐标即可 我这里是为了调试加了很多的sleep,print(hander)是为了看是否定位到了元素 4.效果如下图,但是我这里的验证文字 ...

  2. 牛客挑战赛30-T3 小G砍树

    link 题目大意: n个节点的带标号无根树.每次选择一个度数为1的节点并将它从树上移除.问总共有多少种不同的方式能将这棵树删到只剩 1 个点.两种方式不同当且仅当至少有一步被删除的节点不同. 题解: ...

  3. js 对象 浅拷贝 和 深拷贝

    网上发现一个比较好的博客 阮一峰的感觉很不错推荐大家看看. http://www.ruanyifeng.com/blog/it/javascript/ 接下来看一下这两个拷贝方法 1.浅拷贝 拷贝就是 ...

  4. 【问题记录】element is not attached to the page document

    遇到ui脚本报错:element is not attached to the page document 解决办法,再次定位即可

  5. TX2 上使用opencv 调用板载mipi摄像头

    使用命令测试 gst-launch-1.0 nvcamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, fo ...

  6. adminlte+layui框架搭建3 - layui弹出层

    在amdinlte首页引入layui.js 和layui.css后添加代码 <script> layui.use(['layer'], function () { var layer = ...

  7. Tomcat 部署项目的几种常见方式

    转自:https://www.cnblogs.com/yuht/p/5714624.html https://www.cnblogs.com/ysocean/p/6893446.html Tomcat ...

  8. 【KMP】【矩阵加速】【递推】洛谷 P3193 [HNOI2008]GT考试 题解

        看出来矩阵加速也没看出来KMP…… 题目描述 阿申准备报名参加 GT 考试,准考证号为\(N\)位数\(X_1,X_2…X_n(0\le X_i\le9)\),他不希望准考证号上出现不吉利的数 ...

  9. 【研究】curl测试不安全的HTTP请求

    漏洞名称: 启用了不安全的HTTP方法 安全风险:       可能会在Web 服务器上上载.修改或删除Web 页面.脚本和文件. 可能原因:       Web 服务器或应用程序服务器是以不安全的方 ...

  10. Android百分比布局方案

    百分比布局让其中的控件在指定高度,宽度,margin时使用屏幕宽高的百分比,不使用dp,px.这样一套布局可以适应多个屏幕,方便适配.如: app:layout_heightPercent=" ...