- 博客(83)
- 收藏
- 关注
原创 延迟执行的函数defer
/** * 创建延迟指定时间后执行的函数fn, 如果在延迟时间内再次执行该方法, 将会根据指定的exclusion的值, * 决定是否取消前一次函数的执行, 如果exclusion的值为true, 则取消执行,反之,将继续执行前一个方法。 * @method defer * @param { Function } fn 需要延迟执行的函数对象 * @par...
2018-03-08 09:39:06
528
原创 Vue中的cached
源码:/** * Create a cached version of a pure function. */function cached (fn) { var cache = Object.create(null); return (function cachedFn (str) { var hit = cache[str]; return hit || ...
2018-01-31 12:23:55
2078
原创 Vue中的makeMap
源码如下 /** * Make a map and return a function for checking if a key * is in that map. */ function makeMap ( str, expectsLowerCase ) { var map = Object.create(null);
2018-01-31 11:36:23
1971
原创 JavaScript分类
let _toString = Object.prototype.toString;function toRawType (value) { return _toString.call(value).slice(8, -1);}//Special ValuetoRawType(null) // "Null"toRawType(undefined) //"Un
2018-01-29 10:28:38
409
原创 JS闭包的应用
1.使函数只执行一次function once(fn) { let once = false; return function () { if(!once) { once = true; fn.apply(this, arguments) } }}
2017-12-11 15:17:22
294
原创 JS中的安全模式
例如: var Person = function (name) { this.name = name } var jack = Person('Jack') console.log(jack) // undefined console.log(window.jack) // Jack以上例子属于不安全模式安全模式: var Person = f
2017-11-21 10:32:25
1029
1
原创 编程之美
1.将帅问题 for(var i = 1; i < 9; i++ ) { for(var b = 1; b < 9; b++) { if(i % 3 == b % 3) { continue; } else {
2017-09-12 14:09:56
348
原创 Vue2.4.2源码探究之渲染过程1之initMixin(Vue)
initMixin(Vue)从命名来看,是为Vue.prototype添加一个_init的属性(为了区分Vue给prototype添加的属性,通常都会添加下划线进行说明),也就是initMixin(Vue)开头做的事情:传递的参数其实是Vue$3函数,也就是把函数看成了对象,本身initMixin(Vue)就是做了这么一件事情
2017-08-29 10:28:44
786
原创 Vue2.4.2源码探究之渲染过程1
基础代码首先是进行了global对象的环境判断,执行factory(),并且挂载Vue$3到global上。执行factory期间Vue执行了大量的操作,例如:factory执行后返回了一个Vue$3,此时的属性值hi还没有转换为setter/getter ,定义如下:执行了this._init(options)后才转换为setter/getter可以现有一个大概的了解,接下来详细介绍。initM
2017-08-28 10:56:04
551
原创 让win10死机的JavaScript小代码
首先死机(俗称黑屏)的原因是内存满了 也就是在任务管理器中内存项接近100% (达到100%就黑屏了,所以看不到,最多99%) 完了再进行其他的操作后超过了最大内存 无法向显示器发出更新屏幕的指令,就突然变黑了! 请在firefox下进行测试 chrome对window.open( )方法做了处理这里写代码片 不能无限打开新窗口(很不爽的一点,不过是出于安全的考虑吧)h
2017-07-14 14:49:06
2059
原创 win10中的进程
实践出真知 首先打开任务管理器,点进程一栏系统中断的进程,只占用了CPU没有占据内存 只从CPU和内存方面考虑的话,从上图可以得出如下结论占据了内存或CPU的代码就是进程
2017-07-14 11:15:15
986
原创 探索Vue之简单双向绑定
本例双向绑定指的是 , Model <=> View ,之间的双向绑定; 最基本原理是通过 Object.defineProperty 实现了 Model=> View的绑定 document.addEventListener 实现了 View=>Model的绑定HTML <input id="a" type="text"><span id="b"></span>JavaScript
2017-06-05 11:27:16
456
原创 探索源码方法之Vue
探索源码方法之Vue怎样增加探索源码的乐趣,一直是一个有趣的问题,现如今测试了如下方法:第一阶段是通过百度搜索相关的Vue源码探索的文章来读,就是不断地读一读,敲一敲,对双向绑定的原理有了一定的认识第二阶段直接一行一行的看源码,把自己不会的一遍又一遍的敲,直到充分的理解了,大概敲了源码的前700多行代码,cached函数对闭包的理解有些帮助第三阶段是通过学习到的知识,自己去创造sVue,把官网
2017-06-05 10:07:06
342
转载 Javascript实现前端简单路由
转载地址月光光WEB开发中路由概念并不陌生,我们接触到的有前端路由和后端路由。同样前端路由在单页面应用也很常见,它使得前端页面体验更流畅。前端路由在很多开源的js类库框架中都得到支持,如angularJS,Backbone,Reactjs等等。前端路由和后端路由原理一样,是让所有的交互和展现在一个页面运行以达到减少服务器请求,提高客户体验的目的,越来越多的网站特别是web应用都用到了前端路由。本文将
2017-04-20 10:30:53
572
原创 Just for fun 计算机英文词汇说明
排名不分先后,仅凭缘分1.Retrieve 英: To retrieve information from a computer or from your memory means to get it back. 中: 检索可以看出中文是高度抽象的语言,说明一个词汇俩词搞定
2017-03-11 13:10:28
409
原创 apply( )
apply ( ) 应用总结1.bind()的应用function _bind(fn, cxt) { var arguments$1 = Array.prototype.slice.call(arguments, 2) return function ( ) { var arguments$2 = arguments; var j = argume
2017-03-09 23:24:52
345
原创 Vue.js v2.1.10 源码探索 v1.1.0
Remerber to keep it Simple,Stupid.Do one thing and do it best.精髓 cached( ) /** * Create a cached version of a pure function. * 创建一个纯函数的缓存版本。 */function cached(fn) { //首先创建一个没有原型的缓
2017-03-09 18:36:38
596
原创 Vue.js v2.1.10 源码探索 v1.0.1
Remember to keep it Simple, Stupid.Do one thing and do it best.toNum(),目的是转化值为数字源码片段1function toNum(val) { var num = parseFloat(val); return isNaN(val)? val : num; }parseFloat( ) pars
2017-03-09 16:25:22
443
原创 Vue.js v2.1.10 源码探索 v1.0
Remember to keep it Simple, Stupid.Do one thing and do it best.首先看下JSON.stringify(str, replaceor, place)源码片段 1 function _toString(val) { // 排除 null undefined return val == nu
2017-03-09 15:28:12
635
原创 jQuery源码中的驼峰命名jQuery.camelCase
仁怀,感恩,真心感谢那些默默付出的人们。var // 防止 $('p').css('-ms-transform', 'scale(1)') 出错 rmsPrefix = /^-ms-/, // 注意细节小括号 rdashAlpha = /-([a-z])/g, //源码中的参数名字稍作修改下更加好理解些 fcamelCase = fun
2017-03-04 17:27:26
893
原创 Just for fun1 console
Console.log( ) 制作网页的必备神器今天看下百度的console.log输出 , 有个红色的字体甚是好玩。先看下源码 window.console && window.console.log && (console.log("blalalala一堆"),console.log("请将简历发送至 %c ( 邮件标题请以“姓名-应聘XX职位-来自console”命名)", "c
2017-02-24 13:33:23
404
转载 IE中的for...in... Bug
IE中如果一个对象中包含以下特殊的属性var protoprops = [ 'toString', 'valueOf', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerabel', 'toLocaleString' ];那么这些属性在for…in…中不会被枚举 for( var p i
2017-02-20 15:57:22
477
翻译 ECMAScript文档阅读记
Standard ECMA-262 7ᵗʰ Edition / June 2016 针对阅读的是第7版本4.2ECMAScript Overview原始值是以下内置类型之一的成员:Undefined,Null,Boolean,Number,String和Symbol;a function is a callable object. 这句是说function是一个可‘召唤’的对象,极其有
2017-02-20 10:51:11
685
原创 ES5 中的Array.prototype.reduce( )方法
fn: callback initial: 初始值 Array.prototype.reduce(fn , initial)用法举例:var a = [1, 2, 3];a.reduce(function (x , y) { return x + y}, 1); // 7这个reduce( )可以用来实现用指定的函数对数组元素进行组合。可以设置初始值,不设置的话默认的会选择数组中的第一个元素作
2017-02-19 22:45:22
667
原创 Window Object:alert() confirm() prompt() methods
para: string; return value: No return value; alert(para); alert()方法在函数中会优先执行, 例如<table> <tr> <td>one</td> </tr> <tr> <td id="c2">two</td> </tr></table><script>
2017-02-19 15:24:33
392
原创 进程与线程
进程:Process 线程:Thread 摘自StackoverflowBoth processes and threads are independent sequences of execution. The typical difference is that threads (of the same process) run in a shared memory space, w
2017-02-17 19:32:23
304
原创 判断Element是否隐藏
判断一个元素是否隐藏,可以先思考怎么隐藏一个元素呢? display:none; visibility:hidden; 通过设置position:absolutely,top,left设置为负值 margin设置为负值最近在看Angular 0.10.0 版本的源码 注释也是相当的pretty。其中涉及到判断Element元素是否可视的方法isVisible源码是这样的function is
2017-02-17 18:18:08
2909
1
翻译 Object.key()与for...in...
The Object.keys() method returns an array of a given object’s own enumerable properties, in the same order as that provided by a for…in loop (the difference being that a for-in loop enumerates properti
2017-02-12 01:00:24
863
转载 em&&rem
摘自w3c em unit Equal to the computed value of the ‘font-size’ property of the element on which it is used.h1 { line-height: 1.2em }means that the line height of h1 elements will be 20% greater t
2017-02-07 16:10:17
323
翻译 Node.textContent( )与Node.innerText( )区别
Node.textContent( )目的是为了获取一个节点的文本内容(包括后代节点的内容); Node.innerText( ) 与 Node.contentText( )的基本功能是相同的只不过有点小不同。1.textCotent不会引发回流,而innerText会引发回流。因为innerText会重新计算元素的CSS样式, 排除掉被隐藏的元素,而textContent不会,他会显示隐藏的元
2017-02-01 20:21:32
1304
翻译 获取随机数
通过内置对象`Math`中的方法`Math.random()`可以得到任意两个数之间的随机数。 var rangdomNumber = Math.random(); //范围是[0, 1)包括0但是不包括1这里引用MDN中提供的方法供大家参考,第一种是包括最小数,不包括最大数(Arbitrary意思是任意的) function getRandomArbitrary (min, max
2017-02-01 17:54:01
796
原创 Max-width
The element width is set to the value of min-width whenever min-width is larger than max-width or whenever min-width is larger than width . —-MDN 意思是说元素的width最终值是由min-width决定的 1.给图片设置max-width
2017-01-13 13:21:16
587
原创 函数参数的传值方式
首先得明确分为两大阵营,原始数据和对象 原始的数据的传递类型是传值传递 //原始类型 string number boolean var num = 1; function f(num) { num = 2; }; //内部是传值传递 就是先把全局下的num的值复制给了 函数内部的参数num; f(num); console
2017-01-04 12:32:24
656
原创 显示传入第二个参数
显示传入第二个函数例如://Chrome 浏览器下测试function f(x, y) { return x;}var a = 1f( , a) //Uncaught SyntaxError: Unexpected token ,f(undefined, a)//第一个输入undefined就可以不报错 暂时没有想到什么地方能用到,先记住肯定能用到!!!
2017-01-04 11:34:15
454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅