JS框架设计读书笔记之-函数
这次写一些函数
1.模拟Object.keys方法
Object.keys = Object.keys || function(obj){
var a = [];
// a[0],a[1]...分别赋值为obj的键
for(a[a.length] in obj);
return a;
}
2.repeat/字符串复制
function repeat(target,n){
var s = target,total = '';
while(n > 0){
if(n % 2 == 1){
total += s;
}
if(n == 1){
break;
}
s += s;
n >>= 1;
}
return total;
}
repeat('abc',3); //abcabcabc
3.byteLen/计算字节数
function byteLen(target){
// 现获取字符串的长度
var byteLength = target.length,i = 0;
for(;i<target.length;i++){
// 半角字符码在0-255 大于255长度就+1
if(target.charCodeAt(i) > 255){
byteLength++;
}
}
return byteLength;
}
4.truncate/字符串截取
function truncate(target,length,truncation){
//参数修正
length = length || 30;
trunction = trunction === undefined ? '...' : trunction;
return target.length > length ?
target.slice(0,length-trunction.length) + trunction : String(target);
}
5.trim/去除字符串两端空白
function trim(str){
return str.replace(/^\s+|\s+$/g,'');
}
6.shuffle/打乱数组
function shuffle(arr){
var j, x, i = arr.length;
for(; i > 0;){
// 从最后一个元素开始 进行随机交换
j = parseInt(Math.random()*i);
x=arr[--i];
arr[i]=arr[j];
// 保证元素不丢失
arr[j]=x;
}
return target;
}
7.flatten/平坦化
function flatten(arr){
var result = [];
arr.forEach(function(item){
if(Array.isArray(item)){
// 碰到数组进行递归
result = result.concat(flatten(item));
}
else{
// 元素依弹入数组
result.push(item);
}
});
return result;
}
8.函数劫持
// IE6,IE7下unshift不返回数组长度
// 先进行判断
if([].unshift(1)!==1){
var _unshift = Array.prototype.unshift;
Array.prototype.unshift = function(){
_unshift.apply(this,arguments);
// 仅仅修正返回值
return this.length;
}
}
JS框架设计读书笔记之-函数的更多相关文章
- JS框架设计读书笔记之-核心模块
随笔记录一下读书心得 1. 框架模块-核心模块 该模块是框架最先执行的部分,jQuery与vue中都有初始化的代码. 模块的功能主要是:对象扩展.数组化.类型判定.事件绑定和解绑.无冲突处理.模块加载 ...
- JS框架设计读书笔记之-动画
基础概念 CSS样式可分为两种,一种值接近无限的集合(color,width),一种值只有几种(display),可以进行计算的样式,产生了动画效果.\ 1. 动画的第一步是获得元素的精确样式值. 2 ...
- JS框架设计读书笔记之-节点模块
节点的创建 浏览器提供了多种手段创建API,从流行程度依次是document.createElement.innerHTML.insertAdjacentHTML.createContextualFr ...
- JS框架设计读书笔记之-选择器引擎01
选择符 选择符是指CSS样式规则最左边的部分,例如 p{},#id{},.class{},p.class{} 等等 总共可以分为四大类: 并联选择器 => 逗号 => $('div,spa ...
- JS框架设计读书笔记之-异步
setTimeout/setInterval 1. 如果回调执行时间大于间隔时间,真正的间隔时间会大一些. 2. 存在一个最小的时间间隔,即使seTimeout(fn,0),在IE6-IE8中大概为1 ...
- JS框架设计读书笔记之-选择器引擎02
选择器引擎涉及相关概念 概念 以Sizzle的主函数声明为例,来说明引擎的相关概念. function Sizzle(selector, context, results, seed) { //... ...
- JS框架设计读书笔记之-小知识
这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单. 简单来讲,计算机识 ...
- javascript框架设计(读书笔记)
我觉得多看几本进阶的书 与其十本书读一遍,不如一本书读十遍 读书的启示: 读好书(看推荐) 精读(重复看) 能读厚书(javascript权威指南) Object.keys Object.keys=O ...
- js框架设计1.1命名空间笔记
借到了司徒正美的写的js框架设计一书,司徒大神所著有些看不太懂,果然尚需循序渐进,稳扎js基础之中. 第一张开篇司徒阐述了种子模块的概念 种子模块亦为核心模块,框架最先执行模块,司徒见解应包含:对象扩 ...
随机推荐
- java基础知识1--String常用方法总结
主要涉及String常用的方法. package collection; import java.lang.reflect.Array; import java.util.Arrays; /** * ...
- Spring - bean的lazy-init属性(懒加载)
默认情况下,容器初始化的时候便会把bean实例化,通常这样做可以让一些配置或者bean实例化的异常在容器启动的时候就发现,而不是在N久之后.但有时候,我们希望某个可能不会用到但又不是100%不用的be ...
- 在ZABBIX平台上通过SNMP协议监控网络设备
在ZABBIX平台上通过SNMP协议监控网络设备 方法一:自动发现监控项 ZABBIX自带模板Template SNMP Interfaces中有"自动发现规则"这一选项,在主机选 ...
- Redis常见的应用场景解析
Redis是一个key-value存储系统,现在在各种系统中的使用越来越多,大部分情况下是因为其高性能的特性,被当做缓存使用,这里介绍下Redis经常遇到的使用场景. Redis特性 一个产品的使用场 ...
- C++中const用于函数重载
C++中const用于函数重载 常成员函数和非常成员函数之间的重载 首先先回忆一下常成员函数 声明:<类型标志符>函数名(参数表)const: 说明: (1)const是函数类型的一部分, ...
- 【重点突破】——Cookie的使用
cookie:小甜饼 cookie:保存客户端浏览器中一个纯文本文件 版本高的浏览器可查看 F12->Resource 左下方cookie 查看 cookie作用: 保存:[安全性要 ...
- wireshark数据包分析实战 第二章
1,监听网络线路:即嗅探器的位置确定. 2,混杂模式:将网卡设置成混杂模式,网卡可以接受经过网卡的所有数据报,包括目的地址不是本网卡的数据报.这些数据都会发送给cpu处理,这样,wireshark就能 ...
- java基础知识及详细笔记
第一章:初识java 1.1.java的概述 ü 什么是计算机程序:计算机按照某种顺序而完成的一系列有序指令的集合. ü Java的作用:1:安装和运行本机上的桌面程序.2:通过浏览器访问面向in ...
- Python面试题之copy/deepcopy详解
copy和deepcopy有什么区别? http://blog.csdn.net/qq_32907349/article/details/52190796 http://iaman.actor/blo ...
- asp.net或者MVC定时自动执行某操作
using System; using System.IO; using System.Runtime.CompilerServices; using System.Text; namespace S ...