JS 分类
zepto源码学习 对象关系
By hiluluke on
今年重新找工作的时候面试官问了个问题,jQuery的链式函数调用的原理。当时一脸懵逼,因为完全没有去了解过。(事实证明面试能够很好的提高自己)
然后感觉直接去看jq的源码,要仔细看好感觉得花很长时间,还是先看看zepto,反正组织代码的原理都差不多。
构造
在立即调用函数中声明了3个东东:
1 | zepto = {}; |
当然声明的位置各有不同,Z函数很显然是构造函数,zepto是构造中间的一些方法的保留吧,然后$上挂上所有对外的方法。构造调用的基本流程是,$调用zepto的init,然后init函数做一些处理,再返回一个Z的`return zepto.Z(dom, selector)`,其中zepto.Z返回的就是一个构造函数Z。这样做的处理是要在$上吧zepto挂上,可以在插件里面改写。
toString方法的仔细了解
By hiluluke on
因子
在看Zepto源码的时候发现它做类型判断的时候用的下面的方法:
1 | var a = {}, |
上面这个判断类型的方法好像在js高程中好像看见过,不过忘了。然后让我对toString这个方法产生了好奇心,于是去多了解了下。
zepto源码学习 一些私有函数和方法
By hiluluke on
在Zepto里面有一些没有暴露出来的私有方法,有一些值得借鉴的地方,比如里面用来判断类型的type函数。大概纪录如下:
一些类型判断方法
判断数组:
1 | isArray = Array.isArray || |
类型判断函数
1 | var class2type = {}, |
上面的类型判断,基本上可以判断所有的类型。主要是改变toString的this指向来实现的。
canvas 笔记(1)
By hiluluke on
初步
首先需要在html中定义html结构
1 | <canvas id="mycanvas" width="600" height="300"></canvas> |
然后需要在js上获取canvas和定义动画类型
1 | var canvas = document.getElementById("mycanvas"); //获取canvas |
然后就可以进行一些绘图操作:
1 | context.lineWidth = 10;定义线条宽度 |
javascript继承
By hiluluke on
本文主要是自己在阅读javascript高级程序设计之后所做的笔记。
js的继承主要依靠原型链的方式实现,与一般的oo语言有些不一样。
原型链
利用原型让一个引用类型继承另一个引用类型的属性和方法。让原型对象等于另一个类型的实例。
1 | function SuperType(){ |