风吟 FY.JS 1.0 轻量级 JavaScript 库源码解析
本文介绍了由风吟开发的轻量级 JavaScript 库 FY.JS 1.0。该库旨在简化 DOM 操作、事件绑定及 AJAX 请求,压缩后仅 1.54KB。文章提供了项目源码、文档及完整示例的下载链接,并详细解析了库的核心功能实现,包括 ready、html、val、text、show、hide、bind、cookie 管理及 AJAX 封装,适合希望深入理解小型 JS 库原理的开发者参考。
FY.JS 库概述与资源链接
作者近期开始学习 JavaScript,为了检验学习成果并寻求改进建议,开发了这款小型工具库。作者明确表示该库主要供个人使用,并不推荐大众直接部署于生产环境。如果读者认为代码存在瑕疵,欢迎指出不足之处及修改建议,作者视此为提升自身技术水平的机会,并非为了重复造轮子,而是通过实践提高编程能力。
欢迎探讨该库中哪些部分可以通过更精简的写法来进一步节省代码体积。
欢迎指出该库在浏览器兼容性方面存在的问题,或提供更完善的实现方式。
FY.JS 项目代码已托管于 Google Code 平台。
项目主页地址:http://code.google.com/p/fyjs/
文档下载地址:http://fyjs.googlecode.com/files/FY.JS.1.0.doc.zip(文档内含完整使用示例)。
压缩版文件下载地址:http://fyjs.googlecode.com/files/FY.1.0.js(大小 1.54KB)。
以下是经过格式化处理后的源代码内容。
FY.JS 1.0 核心源码解析
代码注释及头部信息如下:
/*
* FY Library 1.0
* Copyright(c) 2010 FengYin
* Blog: http://fengyin.name/
* Date: 2010-3-12 16:10:01
* Update: http://code.google.com/p/fyjs/
*/
(function(_w,_d) {
var _FY,$,FY;
_w._FY=_w.$= function(i) {
return new FY(i)
};
FY = function(i) {
this.id = _d.getElementById(i)
};
FY.prototype = {
ready: function(f) {
var l = _w.onload;
if (typeof(l) == "function") {
_w.onload = function() {
l();
f()
}
} else {
_w.onload = f
}
},
html: function(c) {
var g = this.id,
r = g.innerHTML;
if (c) {
g.innerHTML = "";
g.innerHTML += c;
return this
} else {
return r
}
},
val: function(c) {
var g = this.id,
r = g.value;
if (c) {
g.value = "";
g.value += c;
return this
} else {
return r
}
},
text: function(c) {
var g = this.id,
r = g.innerText,
f = g.textContent;
if (c) {
r ? g.innerText = "": g.textContent = "";
r ? g.innerText += c: g.textContent += c;
return this
} else {
return r ? r: f
}
},
show: function(f) {
this.id.style.display = "block";
f ? f() : null
},
hide: function(f) {
this.id.style.display = "none";
f ? f() : null
},
bind: function(t, f) {
var l = this.id,
e = l.attachEvent;
e ? l.attachEvent("on" + t,f):l.addEventListener(t,f,false)
},
setcookie: function(s) {
var p = new Date();
p.setTime(p.getTime() + (s.expires || 24) * 60 * 60 * 1000);
_d.cookie = s.name + "=" + escape(s.value) + ";expires=" + p.toGMTString() + ';path=/'
},
getcookie: function(n) {
var c = _d.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"));
return c ? unescape(c[2]) : null
},
ajax: function(s) {
var a = _w.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
with(a) {
open("POST", s.url, true);
setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
send(s.data);
onreadystatechange = function() {
if (readyState == 4 && status == 200) {
s.success(responseText)
}
}
}
}
}
})(window,document);JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
