Spiga

标签为JS的文章

Javascript真谛2——没有类

2008-08-13 15:38:12

摘要:“类”,的确可以帮助我们理解复杂的现实世界,这纷乱的现实世界也的确需要进行分类。但如果我们的思想被“类”束缚住了,“类”也就变成了“累”。想象一下,如果一个生命对象开始的时就被规定了固定的“类”,那么它还能演化吗?蝌蚪还能变成青蛙吗?还可以给孩子们讲小蝌蚪找妈妈的故事吗?所以,JavaScript中没有“类”,类已化于无形,与对象融为一体。正是由于放下了“类”这个概念,JavaScript的对象才有了其他编程语言所没有的活力。 阅读全文

Javascript真谛1——回归简单

2008-08-12 17:07:01

摘要:编程世界里只存在两种基本元素,一个是数据,一个是代码。要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。JavaScript中的数据很简洁的。简单数据只有 undefined, null, boolean, number和string这五种,而复杂数据只有一种,即object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。JavaScript中的代码只体现为一种形式,就是function。 阅读全文

自制原生js工具库——CSS篇

2008-05-08 12:28:02

摘要:源码 /* ******************************************************************* */ /*   CSS FUNCTIONS                                                     */ /* ******************************************************************* */ var CSS = (function() {    var css = {}; ​    // 转换的RGB字符串的形式“的RGB ( 255 , 255 , 255 ) ”到“ #ffffff ”    css.rgb2hex = function(rgbString) {        if (typeof (rgbString) != string || !defined(rgbString.match)) { return null; }        var result = rgbString.match(/^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*/);        if (result == null) { return rgbString; }        var rgb = +result[1] 16 | +result[2] 8 | +result[3];        var hex = ;        var digits = 0123456789abcdef;        while (rgb != 0) {            hex = digits.charAt(rgb 0xf) + hex;            rgb = 4;       }        while (hex.length 6) { hex = '0' + hex; }        return # + hex;   }; ​    // 转换字符样式    css.hyphen2camel = function(property) {        if (!defined(property) |…… 阅读全文

自制原生js工具库——Event篇

2008-05-07 21:28:34

摘要:源码 /* ******************************************************************* */ /*   EVENT FUNCTIONS                                                   */ /* ******************************************************************* */ ​ var Event = (function() {    var ev = {}; ​    //阻止事件冒泡    ev.stopBubble = function(e) {        // 如果传入了事件对象,那么就是非IE浏览器        if (e)        // 因此它支持W3C的stopPropagation            e.stopPropagation();        else        // 否则,我们得使用IE的方式取消事件冒泡            window.event.cancelBubble = true;   }; ​    //防止发生默认浏览器行为    ev.stopDefault = function(e) {        // 防止默认浏览器行为(W3C)        if (e) e.preventDefault(); ​        // IE中防止浏览器行为的捷径        return false;   };    //    // 由 Dean Edwards 所编写的addEvent/removeEvent 2005    // 由Tino Zijdel整理    // http://dean.edwards.name/weblog/2005/10/add-event/ ​    ev.addEvent = function(element, type, handler) {        //为每个事件处理函数赋予一个独立的ID        if (!handler.$$guid) handler.$$guid = ev.addEvent.guid++;     …… 阅读全文

自制原生js工具库——DOM篇

2008-05-06 23:33:23

摘要:源码 /* ******************************************************************* */ /*   DOM FUNCTIONS                                                     */ /* ******************************************************************* */ var DOM = (function() {    var dom = {}; ​    //查找相关元素的前兄弟元素    dom.prev = function(elem) {        do {            elem = elem.previousSibling;       } while (elem elem.nodeType != 1);        return elem;   }; ​    //查找相关元素的后兄弟元素    dom.next = function(elem) {        do {            elem = elem.nextSibling;       } while (elem elem.nodeType != 1);        return elem;   }; ​    //查找第一个子元素    dom.first = function(elem) {        elem = elem.firstChild;        return elem elem.nodeType != 1 ? nextSibling(elem) : elem;   }; ​    //查找最后一个子元素    dom.last = function(elem) {        elem = elem.lastChild;        return elem elem.nodeType != 1 ? prevSibling(elem) : elem;   }; ​    //查找父元素    dom.parent = function(elem, num) {        num…… 阅读全文

自制原生js工具库——基础篇

2008-05-05 23:33:45

摘要:源码 /** * Copyright (c)2008 xiaosuo */ /* ******************************************************************* */ /*   UTIL FUNCTIONS                                                   */ /* ******************************************************************* */ var Util = { 'VERSION':1.1 }; ​ //获取id function id(name) {    return document.getElementById(name); } ​ //获取指定元素 function tag(name, elem) {    // 如果不提供上下文元素,则遍历整个文档    return (elem || document).getElementsByTagName(name); } ​ //判断对象是否存在 function defined(o) {    return (typeof (o) != undefined); } ​ /* ******************************************************************* */ /*   OBJECT FUNCTIONS                                                 */ /* ******************************************************************* */ var Obj = (function() {    var object = {}; ​    //检查是否是对象    object.isObject = function(o) {        return (o != null typeof (o) == object defined(o.constructor) o.constructor == Object !defined(o.node…… 阅读全文