Mootools 源代码学习笔记一

《概述》
之前一直用Jquery, 但那只是一个工具,没有深入到底层的实现源代码上, 为了有更好的提升自已,Google了对比了YUI, Jquery, Mootools,prototypejs, 腾讯, 淘宝的几个库。 Jquery大部分人说源代码太高深,没有按面向对向的思想来设计,YUI学习曲线太长, 腾讯和淘宝的可能因为是国内公司自己的设计的库,有了一定库的设计基础后可以想想他们为什么这样实现。所以对于入门了解库的思想及代码可读性来说,还是选择了Mootools.它可以按TYPE, Class, Array, Function等,把每个核心的代码下载下来学习。
参考的资源有:
1. Pro+JavaScript+with+MooTools 整体讲解mootools 的一本书
2. Mootools.net
以下内容是通读了Mootools 的源代码后在在结合书中内容,提出的总结


章节 1. 类型 TYPE
类型的处理主要是用来处理数据,比如说你可以把两个数字相加,但是不能把一个数字跟一个对象相加,Javascript主要的类型判断方法为 typeof运算符。但 typeof 运算符有一个缺点是只能判断常规的几种类型,如数字,字符, 函数, 对象等。
console.log(typeof 42); // 'number'
console.log(typeof true); // 'boolean'
console.log(typeof 'hello'); // 'string'
console.log(typeof function(){}); // 'function'
console.log(typeof {name: 'mark'}); // 'object'
而没有办法区分以下类型:
console.log(typeof {name: 'mark'}); // 'object'
console.log(typeof [1, 2, 3]); // 'object'
console.log(typeof new Date()); // 'object'


Mootools 的type做为最核心的库,主要就是解决这个问题。那为什么不直接使用 Mootools的Class来实现这个定义呢?比如在Class的返回的构造函数里面定义一个判断标识,其实自已新定义的类是没有问题,但Array, Date等原生对象,没有办法改变它的构造函数。所以要定义一个新的TYPE类。
TYPE类只是给Array增加一个新的属性和方法。
章节 1.1 TYPE类的设计要求
a. 创造一个类型构造函数 new Type('Array',Array);  第一个参须为必须的,代表新的类型的名称, 第二个为对象,返回的值为第二个传入的对象,这里为Array构造函数。如果没有传入第二个值,返回空。
  new Type('name', option); 不能改变传入option对象的原型,只能增加option对象的属性及方法
b. 定义全局方法typeOf(item); 返回其相关类型,如 var A=function(){}; new Type('Atype', A); var a=new A(); console.log(typeOf(a)); //Atype;

c. 定义全局方法instanceOf(Array,Type); //区别于 Array instanceof Type为false, 这里为true. 即比较Array.$constructor==Type. $constructor为扩展的属性













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值