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. Win7下C/C++跨平台开发工具IDE的安装之CodeBlocks

    1. Win7下安装CodeBlocks: 下载带有mingw的CodeBlocks:http://www.codeblocks.org/downloads/26#windows 运行所下载程序: 点 ...

  2. 2019.3.7考试T2 离线数论??

    $ \color{#0066ff}{ 题目描述 }$ 一天,olinr 在 luogu.org 刷题,一点提交,等了一分钟之后,又蛙又替. olinr 发动了他的绝招,说:"为啥啊???&q ...

  3. php 写入csv时 双引号,逗号及特殊字符

    1.双引号 <?php function new_csv($string) { $filename = date('Ymd').'.csv'; //设置文件名 header("Cont ...

  4. linux 下PATH环境变量

    环境变量简介 什么是环境变量呢?简要的说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件. 在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现&quo ...

  5. 把查询的结果组织为一串字符(eg:板板鞋,兵乓球,篮球,足球)

    --把查询的结果组织为一串字符(板板鞋,兵乓球,篮球,足球) drop table a create table a( name varchar(20)) insert into a select ' ...

  6. C#.net地址传参汉字乱码解决方案

    C#.net地址传参汉字乱码解决方案   web.config文件: <system.web> <globalization requestEncoding="GB2312 ...

  7. aoj0525

    一.题意:题目大致是讲一个烧饼铺烤烧饼,在一个n X m (1<=n<=10,1<=m<=10000)的烤桌上面摆着一堆烧饼,数字1表示烧饼正面,0表示烧饼反面.然后你每次可以 ...

  8. EntityFramework 并发处理

    转载自:http://www.cnblogs.com/TianFang/p/4439215.html 什么是并发? 并发分悲观并发和乐观并发. 悲观并发:比如有两个用户A,B,同时登录系统修改一个文档 ...

  9. git 代码统计

    查看git上的个人代码提交量: git log --author="Marek Romanowski" --since="2019-01-01" --no-me ...

  10. redis 网络架构

    https://blog.csdn.net/simplemurrina/article/details/53890542 GDB  redis https://gitbook.cn/gitchat/c ...