函数详解
文甜心
这个作者很懒,什么都没留下…
展开
-
jQuery中的delegate与live实现方式简析
delegate与live的实现原创 2017-03-03 21:19:41 · 612 阅读 · 0 评论 -
函数节流与防抖(参考lodash)
function debounce(fn, delay, immediate){var timeout, args, context, timestamp, result; var later = function(){ var last = Date.now() - timestamp; if(原创 2017-09-21 23:15:42 · 5638 阅读 · 0 评论 -
深拷贝与浅拷贝实现(参考jquery)
var toString = [].toString, hasOwn = Object.prototype.hasOwnProperty;var types = { '[object Boolean]':'bool', '[object Number]' : 'number', '[object String]' : 'string', '[原创 2017-09-21 23:13:06 · 334 阅读 · 0 评论 -
jquery无new构造
var jquery = function(selector, context){ return new jquery.fn.init(selector, context);}jquery.fn = jquery.prototype = { init: function(selector, context){ this.dom = document.querySe原创 2017-09-21 23:10:10 · 352 阅读 · 0 评论 -
axios中对cookie的封装
function isStandardBrowserEnv() { if(typeof navigator !== 'undefined' && navigator.product === 'ReactNative'){ return false; } return ( typeof window !== 'undefined' &&原创 2017-09-29 16:07:56 · 2161 阅读 · 0 评论 -
axios用utils
有幸读了一下axios源码,一些utils的实现比较有趣// begin with <>:// or //function isAbsoluteUrl(url) { // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed // by any co原创 2017-09-29 14:13:32 · 1121 阅读 · 0 评论 -
背包问题
完全背包问题function getMaxGold(n,w,g,p){ var nextGold, results = []; for(var i = 0; i <= w; i++){ results[i] = (i < p[0]) ? 0 : g[0]; }原创 2017-07-31 23:45:46 · 190 阅读 · 0 评论 -
new 模拟
new的作用: 1、先生成一个空的obj 2、将obj.__proto__绑定到构造函数的prorotype 3、将构造函数的this绑定在obj上(执行) 4、如果有对象返回就返回该对象,并将obj丢弃,如果没有或者返回的不是一个对象,就将obj返回。function newFactory(){ var ob原创 2017-06-10 11:59:13 · 171 阅读 · 0 评论 -
函数节流与防抖
同一个操作会连续触发某个行为时,为了防止因为频繁执行DOM操作、资源加载等重行为,导致UI停顿甚至浏览器崩溃,我们需要做一定的限制。所谓函数节流,是指某连续操作,前后两次操作的时间间隔达到我们的设置,才去执行对应行为。 函数防抖是函数节流的变种,如果我们希望,即使连续操作时间间隔没有达到我们的预期,也会在经过一定时间后,保证对应行为会执行一次。function throttle(method原创 2017-06-09 15:20:34 · 437 阅读 · 0 评论 -
promise的实现原理
以node EventEmitter为核心实现基础版promise//利用node EventEmitter实现promise var Promise = function(){ EventEmitter.call(this);//显式调用构造函数 } util.inherits(Promise,EventEmitter);//利用node util工具函数i原创 2017-06-19 19:35:10 · 937 阅读 · 0 评论 -
extend的实现
拷贝有深浅之分。 浅拷贝比较easyfunction extend2(target, ref){ var name, value; for(name in ref){ value = ref[name]; if(value !== undefined){原创 2017-06-06 19:36:47 · 390 阅读 · 0 评论 -
isPlainObject实现与分析
首先我们需要一个判断类型的神码。var toString = [].toString, hasOwn = Object.prototype.hasOwnProperty; var types = { '[object Boolean]':'bool', '[object Number]' : 'number',原创 2017-06-06 19:30:31 · 2512 阅读 · 0 评论 -
js中bind函数的实现
bind函数的主要目的,是改变函数执行时this的指向,也就是函数执行环境的上下文。简单修改函数this指向,我们可以像下面一样给目标函数绑定作用域:Function.prototype.bind = function(context){ //将调用bind的目标函数的this保存起来 var self = this; retur原创 2017-03-24 19:45:19 · 1638 阅读 · 0 评论 -
sort()方法详解
我们使用sort时,很少使用参数,sort(sortby);其中的sortby表示一个比较函数,即按照自定义的条件进行排序。没有使用参数时,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。举个例子,一目了然: <script type="text/javascript">var arr = ne原创 2017-04-03 17:56:33 · 910 阅读 · 0 评论 -
jquery中$(document).ready(function(){})的实现
document.ready = function (callback) { ///兼容FF,Google if (document.addEventListener) { document.addEventListener('DOMContentLoaded', function () {转载 2017-03-20 17:10:51 · 880 阅读 · 0 评论 -
new模拟实现
function newFactory(){ var obj = new Object(); var args = arguments; fn = args.shift(); obj.__proto__ = fn.prototype; var result = fn.call(obj,args); return typeof result === 'o原创 2017-09-21 23:20:56 · 242 阅读 · 0 评论