标签归档:函数
JS 扁平化数据转树结构函数
将扁平化数据转为树结构是常见的开发需求。
实现原理:遍历数据,把没有父节点映射的节点作为根节点,再遍历一次数据,将当前遍历节点标识的值与前一次遍历节点的父节点映射标识的值对比,如果相等则当前遍历节点是前一次遍历节点的父节点。 继续阅读
JS 函数柯里化
函数柯里化是一种函数转化方法,也是一种高阶函数,可以将一个接收多个参数的函数转化为只接收部分参数的函数。
函数柯里化实现:
function curry(fn, args) { var num = fn.length; args = args || []; return function() { // arr 用于收集传入的参数 var arr = [].slice.call(arguments); // 将之前收集的参数合并到 arr arr = arr.concat(args); // 如果收集到的参数个数未达到 num,则递归调用继续收集参数 if (arr.length < num) { return curry.call(this, fn, arr); } // 当收集到的参数个数达到 num, 就执行 fn return fn.apply(this, arr); } }
JS 匿名函数与闭包的this指向
匿名函数与闭包的 this 均指向 window。
function a() { (function () { console.log(this, 'function'); })(); function b() { console.log(this, 'function b') }; b(); } a(); // > Window {window: Window, self: Window, document: document, name: '', location: Location, …} 'function' // > Window {window: Window, self: Window, document: document, name: '', location: Location, …} 'function b'
利用CSS3 gradient(渐变)函数实现渐变背景
CSS3 规范定义了两种类型的渐变,分别是线性渐变(linear-gradient)、径向渐变(radial-gradient)。在这之前要实现渐变背景的效果,通常需要用图片来实现。
CSS3 渐变背景在现代浏览器中基本得到了很好的实现,在 IE10 以上版本也得到了支持。而在低版本浏览器中需要添加 -webkit-、-moz- 或 -o- 前缀才能实现渐变的效果。 继续阅读
JS AJAX函数封装
AJAX,英文全称:Asynchronous JavaScript and XML,即异步的 JavaScript 和 XML,主要用于在与服务器交换数据时无需重新加载页面。AJAX 的实现是通过创建 XMLHttpRequest 对象,向服务器发送请求,再根据服务器返回的响应决定客户端接下来的动作。 继续阅读