2008-08-13 15:38:12
摘要:object就是对象的类型。在JavaScript中不管多么复杂的数据和代码,都可以组织成object形式的对象。但JavaScript却没有 “类”的概念!
我们先来看一段JavaScript程序:
var life = {}; //光溜溜的生命对象
for(life.age = 1; life.age = 3; life.age++)
{
switch(life.age)
{
case 1: life.body = 卵细胞; //增加body属性
life.say = function(){alert(this.age+this.body)};
break;
case 2: life.tail = 尾巴; //增加tail属性
life.gill = 腮; //增加gill属性
life.body = 蝌蚪;
life.say = function(){alert(this.age+this.body+-+this.tail+,+this.gill)};
break;
case 3: delete life.tail; //删除tail属性
delete life.gill; //删除gill属性
life.legs = 四条腿; //增加legs属性
life.lung = 肺; //增加lung属性
life.body = 青蛙;
life.say = function(){alert(this.age+this.body+-+this.legs+,+this.lung)};
break;
};
life.say(); //调用say方法,此方法逻辑每次都会动态改变
}; ……
阅读全文
2008-08-12 17:07:01
摘要:编程世界里只存在两种基本元素,一个是数据,一个是代码。要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。
JavaScript中的数据很简洁的。简单数据只有 undefined, null, boolean, number和string这五种,而复杂数据只有一种,即object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。
JavaScript中的代码只体现为一种形式,就是function。
**注意:**以上单词都是小写的,不要和Number, String, Object, Function等JavaScript内置函数混淆了。
先说说简单数据类型吧。
undefined:
代表一切未知的事物,啥都没有,无法想象,代码也就更无法去处理了。
注意:typeof(undefined) 返回也是 undefined。可以将undefined赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。
null:
有那么一个概念,但没有东西。无中似有,有中还无。虽难以想象,但已经可以用代码来处理了。
注意:typeof(null)返回object,但null并非object,具有null值的变量也并非object。
boolean:
是就是,非就非,没有疑义。对就对,错就错,绝对明确。既能被代码处理,也可以控制代码的流程。
number:
线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代和循环等。
注意:typeof(NaN)和typeof(Infinity)都返回number 。NaN参与任何数值计算的结构都是NaN,而且 NaN != NaN 。Infinity / Infinity = NaN 。
**string:
** 面向人类的理性事物,而不是机器信号。人机信息沟通,代码据此理解人的意图等等,都靠它了。
为了进一步简化编程,Javascript还在这些简单数据之上,再规定了一些特殊含义。这些特殊含义又可以使得Javascript的语句写得更简洁。例如,undefined、null、 、0这四个值转换为逻辑值时就是false,除这四个家伙再加上false本身外,其他任何东西转换为逻辑值时都是true。有趣的是underfine……
阅读全文
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) || ……
阅读全文
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++;
//……
阅读全文
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 = nu……
阅读全文
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.nodeName)……
阅读全文