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. python连接postgreSQL

    利用python(我用的是python2.7版本)连接postgresql数据库,这里使用psycopg2这个插件 官网下载psycopg2-2.5.1.tar.gz:http://initd.org ...

  2. 快速排序(一) 思想 JAVA实现

    已知数组59.71.37.56.88.96.21.58.48.43 采用快速排序将数组有序. 快速排序同样采用了“分治策略”,使用递归的思路来实现算法. 快速排序的算法思想: 9.71.37.56.8 ...

  3. HTTP上下文表单内容转为实体对象

    using ServiceStack.Web; using System; using System.Collections.Generic; using System.Linq; using Sys ...

  4. shared_ptr智能指针

    来自博客:https://www.cnblogs.com/lzpong/p/6188034.html 多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_p ...

  5. SpringBoot中 application.yml /application.properties常用配置介绍

    # Tomcat server: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 port: 10444 ser ...

  6. Spring学习笔记(三)—— 使用注解配置spring

    一.使用步骤 1.1 导包 1.2 为主配置文件引入新的命名空间(约束) 在applicationContext.xml中引入context约束 1.3 编写相关的类 public class Use ...

  7. qdu_组队训练(ABCFIJK)

    A - Second-price Auction Do you know second-price auction? It's very simple but famous. In a second- ...

  8. QQ链接病毒分析

    QQ链接病毒分析 特征 点击病毒链接后,自动会在每一时刻范围内通过所有途径群发新的病毒链接(途径包括Qzone,群聊等) 分析 首先看一下病毒链接的一个样例 http://news.soso.com/ ...

  9. PHP foreach ($arr as &amp;$value)

    foreach ($arr as &$value) 看到一个有意思的东西: <?php $arr = ['1', '2', '3', '4']; foreach ($arr as &am ...

  10. Python学习 day03

    一.基本数据类型 python中的基本数据类型有以下几种: int   --  整数     python3中默认整数都是int型,python2中int的范围为-231~232-1(32位系统中)/ ...