JS如何封装一些列方法为一个对象的操作,然后集中管理这些操作,方便修改和调用

var Api = {
ajax:{
// 添加项目 旧!
add_project : function(pro_name, html, css, js,callback) {
$.post("/action/project/add", {
"v_code":User.v_code,
"pro_name" : pro_name,
"html" : html,
"css" : css,
"js" : js
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 添加代码 新!
add_code : function(code_name, html, css, js,callback) {
$.post("/action/code/add", {
"v_code":User.v_code,
"code_name" : code_name,
"html" : html,
"css" : css,
"js" : js
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 保存当前代码 旧!
update : function(id, html, css, js,sign,callback,force) {
$.post("/action/project/update", {
"v_code":User.v_code,
"id" : id,
"css" : css,
"js" : js,
"html" : html,
"sign":sign,
"force":force
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 保存当前代码 新!
update_code : function(id, html, css, js,sign,callback,force) {
$.post("/action/code/update", {
"v_code":User.v_code,
"id" : id,
"css" : css,
"js" : js,
"html" : html,
"sign":sign,
"force":force
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 存为新版本
new_version : function(id, html, css, js,callback) {
$.post("/action/project/new_version", {
"v_code":User.v_code,
"id" : id,
"css" : css,
"js" : js,
"html" : html
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// fork代码 旧!
fork : function(pro_id, ver, pro_name,callback) {
$.post("/action/project/fork", {
"v_code":User.v_code,
"pro_id" : pro_id,
"ver" : ver,
"pro_name" : pro_name
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// fork代码 新!
fork_code : function(id, code_name,callback) {
$.post("/action/code/fork", {
"v_code":User.v_code,
"id" : id,
"code_name" : code_name
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 删除指定版本的代码
delete_version : function(captcha,pro_id, ver,sign,callback,force) {
$.post("/action/project/delete_version", {
"captcha_":captcha,
"v_code":User.v_code,
"pro_id" : pro_id,
"ver" : ver,
"sign":sign,
"force":force
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
}, /**
* 删除代码,新!
*
*/
delete_code:function(captcha,id,callback){
$.post("/action/code/delete", {
"captcha_":captcha,
"v_code":User.v_code,
"id" : id
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
}, // 删除项目
delete_project : function(captcha,pro_id,callback) {
$.post("/action/project/delete_project", {
"captcha_":captcha,
"v_code":User.v_code,
"id" : pro_id
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 添加评论
add_comment : function(code_id, content,callback) {
$.post("/action/project/add_comment", {
"v_code":User.v_code,
"id" : code_id,
"content" : content
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 删除评论
delete_comment : function(comment_id,callback) {
$.post("/action/project/delete_comment", {
"v_code":User.v_code,
"id" : comment_id
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 投票,顶踩等
vote : function (code_id, type,callback) {
$.post("/action/project/vote", {
"v_code":User.v_code,
"id" : code_id,
"type" : type
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
}, login : function (name,callback) {
$.post("/action/ajax/login", {
"username" : name
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 登出
logout : function (callback) {
$.post("/action/ajax/logout",'uid='+User.user, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 通过id获取代码
getCode : function(id,callback) {
$.post("/action/api/getCode", {
"id" : id
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 项目重命名
project_rename : function(id,name,callback){
$.post("/action/project/rename", {
"v_code":User.v_code,
"pro_id" : id,
"name":name
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 代码重命名 旧!
code_rename : function(id,name,callback){
$.post("/action/project/rename_code", {
"v_code":User.v_code,
"code_id" : id,
"name":name
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 代码重命名 新!
code_rename : function(id,name,callback){
$.post("/action/code/rename", {
"v_code":User.v_code,
"id" : id,
"name":name
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 用户设置项,主题等
setting : function(name,value,callback){
$.post("/action/api/setting", {
"v_code":User.v_code,
"name" : name,
"value":value
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 发布代码 旧!
*/
publish : function(id,description,callback){
$.post("/action/project/post", {
"v_code":User.v_code,
"id" : id,
"description":description
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 发布代码 新!
*/
publish_code : function(id,description,callback){
$.post("/action/code/post", {
"v_code":User.v_code,
"id" : id,
"description":description
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 更新代码信息 旧!
update_info : function(id,name,description,callback){
$.post("/action/project/update_info", {
"v_code":User.v_code,
"id" : id,
"name" : name,
"description":description
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 更新代码信息 新!
update_code_info : function(id,name,description,callback){
$.post("/action/code/update_info", {
"v_code":User.v_code,
"id" : id,
"name" : name,
"description":description
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
}, // 收藏
favor : function(code_id,callback){
$.post("/action/project/favor", {
"v_code":User.v_code,
"id" : code_id
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
// 取消收藏
un_favor : function(favor_id,callback){
$.post("/action/project/un_favor", {
"v_code":User.v_code,
"id" : favor_id
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 添加url文件
*/
add_url_file : function(url,callback){
$.post("/action/file/add_url_file",{
"v_code":User.v_code,
"url":url
},function(msg){
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 删除文件
*/
delete_file : function(captcha,id,callback){
$.post("/action/file/delete_file", {
"captcha_":captcha,
"v_code":User.v_code,
"id" : id
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 添加建议
*/
add_advice : function(captcha,ident,email,content,callback){
$.post("/action/advice/add_advice",{
"captcha_":captcha,
"ident":ident,
"email":email,
"content":content
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 发送消息
*/
send_msg:function(receiver,content,callback){
$.post("/action/msg/sendMsg",{
"receiver":receiver,
"content":content
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 阅读消息
*/
read_msg:function(id,callback){
var params = '?';
$.each(id,function(i,cur){
params+="id="+cur;
if(i<id.length-1){
params+="&";
}
});
if(params=='?'){
params+="id="+id;
}
$.post("/action/msg/readMsg"+params,params, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 阅读所有的未读消息
*/
read_all_msg:function(type,callback){
$.post("/action/msg/readAllMsg",{
"v_code":User.v_code,
"type":type,
}, function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 将插件加到市场
*/
add_to_market:function(id,callback){
$.post("/action/plugin/add_to_market",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 将代码更新到插件市场,id为code的id.
*/
update_to_market:function(id,callback){
$.post("/action/plugin/update_to_market",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 从插件市场移出
*/
delete_from_market:function(id,callback){
$.post("/action/plugin/delete_from_market",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 将代码设置为插件
*/
set_plugin:function(id,sys,callback){
$.post("/action/plugin/set_code_plugin",{
"id":id,
"sys":sys
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 审核插件
*/
check_plugin:function(id,callback){
$.post("/action/plugin/check",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 取消审核插件
*/
uncheck_plugin:function(id,callback){
$.post("/action/plugin/uncheck",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 加到广场
*/
add_to_square:function(id,callback){
$.post("/action/square/add",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 更新到广场
*/
update_to_square:function(id,callback){
$.post("/action/square/update",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 添加分类
*/
add_catalog:function(name,callback){
$.post("/action/catalog/add",{
"name":name
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 分类重命名
*/
rename_catalog:function(name,id,callback){
$.post("/action/catalog/rename",{
"name":name,
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 删除分类,该分类必须没有代码
*/
delete_catalog:function(id,callback){
$.post("/action/catalog/delete",{
"id":id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 移动到分类
*/
move_to_catalog:function(code_id,catalog_id,callback){
$.post("/action/catalog/move_to",{
"id":code_id,
"catalog":catalog_id
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
/**
* 设置代码类型
*/
set_code_type:function(id,code_type,type,callback){
$.post("/action/code/set_code_type",{
"id":id,
"code":code_type,
"type":type
},function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
},
less_compile:function(less,callback){
$.post("/action/ajax/less_compile",less,function(msg) {
if(typeof callback != 'undefined')return callback(msg);
});
}
}
};

这是一个例子,那么从例子中,我们可以学习到,如何封装一系列方法到一个对象中。

下面是如何调用已经封装好的方法,居然是如此的简练:

$(function() {
if (typeof isIE6 != "undefined") {
$(".logo").attr({
"class" : "ie6_logo"
})
}
$(window).bind("resize", function() {
resize();
})
$(".comment").click(function() {
$(".fork").attr("class", "nofocus fork");
$(this).attr("class", "focus comment");
$(".detail_comment").show();
$(".detail_fork").hide();
});
$(".fork").click(function() {
$(".comment").attr("class", "nofocus comment");
$(this).attr("class", "focus fork");
$(".detail_comment").hide();
$(".detail_fork").show();
});
$("#logout").click(function() {
logout();
});
$(".prelogin").click(function() {
new $.Zebra_Dialog($("#user_login").html(), {
'title' : '登录方式',
'modal' : true,
'width' : 460,
'type' : false,
'buttons' : [ {
caption : '取消'
} ]
}).show();
/*
* var url; //转向网页的地址; var name; //网页名称,可为空; var iWidth; //弹出窗口的宽度; var
* iHeight; //弹出窗口的高度; var iTop =
* (window.screen.availHeight-30-iHeight)/2; //获得窗口的垂直位置; var iLeft =
* (window.screen.availWidth-10-iWidth)/2; //获得窗口的水平位置;
* window.open(url,name,'height='+iHeight+',,innerHeight='+iHeight+',width='+iWidth+',innerWidth='+iWidth+',top='+iTop+',left='+iLeft+',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no');
*/
});
resize();
$("button.detail_comment_button").click(function() {
addComment();
});
$("textarea[name='content']").keydown(function(event) {
if (event.ctrlKey && event.keyCode == 13) {
addComment();
}
});
$("#view_scale").change(function() {
var sc = $(this).val();
var w = '100%';
var h = '100%';
var t = 'scale(1)';
if (sc == '0.5') {
w = '200%';
h = '200%';
t = 'scale(0.5)';
} else if (sc == '2') {
t = 'scale(2)';
}
$("#code_detail").css({
'width' : w,
'height' : h,
'-webkit-transform' : t,
'transform' : t
});
});
$("#show_gist").mouseenter(function(){
show_gist();
});
}); var resize = function() {
var width = $(window).width();
var cw = $(".comment").width();
var w = width;
if (w < 1000)
w = 1000;
w = w - 300 - 60;
$(".detail_mainContent_left,.detail_comment_input textarea")
.css("width", w);
$(".detail_wrapper").css("width", width < 1000 ? 960 : width - 40);
$(".fork").css("width", w - cw - 43);
}
function logout() {
Api.ajax.logout(function(msg) {
location.href = RURL;
});
}
function login(op) {
var url = "http://runjs.cn/action/openid/before_login?op=" + op; // 转向网页的地址;
var name = "用" + op + "登录RunJS"; // 网页名称,可为空;
var iWidth = 800; // 弹出窗口的宽度;
var iHeight = 600; // 弹出窗口的高度;
var iTop = (window.screen.availHeight - 30 - iHeight) / 2; // 获得窗口的垂直位置;
var iLeft = (window.screen.availWidth - 10 - iWidth) / 2; // 获得窗口的水平位置;
window
.open(
url,
name,
'height='
+ iHeight
+ ',,innerHeight='
+ iHeight
+ ',width='
+ iWidth
+ ',innerWidth='
+ iWidth
+ ',top='
+ iTop
+ ',left='
+ iLeft
+ ',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no');
}
function addComment() {
var ctn = $("textarea[name='content']");
var content = ctn.val();
if (content.length == 0 || content == "觉得怎么样?赶紧说几句"){
alert("请输入评论内容");
return;
}
Api.ajax
.add_comment(
Code.id,
content,
function(msg) {
var msg = eval("(" + msg + ")");
if (msg.error) {
alert(msg.msg);
return false;
}
var comment = $('<li id="comment_'
+ msg.id
+ '">'
+ '<img src="'
+ User.portrait
+ '" width="48" height="48">'
+ '<p><a href="'
+ (typeof User.space == "undefined" ? 'javascript:void(0);'
: User.space)
+ '">'
+ User.name
+ '</a><span class="time">1分钟前</span><span class="delete"><a href="javascript:removeComment('
+ msg.id + ');">删除</a></span></p>' + '<p>'
+ msg.content + '</p>' + '</li>');
comment.hide();
$(".detail_comment_list").prepend(comment);
comment.show(500);
$(".zeroComment").remove();
ctn.val("");
});
}
function removeComment(id) {
if (confirm("确认删除此条评论?")) {
Api.ajax
.delete_comment(
id,
function(msg) {
var msg = eval("(" + msg + ")");
if (msg.error) {
alert(msg.msg);
return false;
}
$("#comment_" + id)
.hide(
500,
function() {
$(this).remove();
if ($(".detail_comment_list li").length == 0) {
$(".detail_comment_list")
.prepend(
'<li class="zeroComment" style="text-align:center;">还没有人评论哦,赶紧抢个沙发吧~~</li>');
}
});
});
}
} function viewAll(t) {
$(".detail_otherProject li").show();
$("#view_all_li").remove();
}
function add_to_square(id) {
Api.ajax.add_to_square(id, function(msg) {
var msg = eval("(" + msg + ")");
if (msg.error) {
alert(msg.msg);
return false;
} else {
alert("添加成功");
location.reload();
}
});
}
function update_to_square(id) {
Api.ajax.update_to_square(id, function(msg) {
var msg = eval("(" + msg + ")");
if (msg.error) {
alert(msg.msg);
return false;
} else {
alert("更新成功");
location.reload();
}
});
} function delete_from_square(id) {
$.post("/action/square/delete", {
"id" : id
}, function(msg) {
var msg = eval("(" + msg + ")");
if (msg.error) {
alert(msg.msg);
return false;
} else {
alert("去除成功");
location.reload();
}
});
}
function love(id) {
Api.ajax.vote(id, 1, function(m) {
m = eval("(" + m + ")");
if (m.error) {
alert(m.msg);
} else {
var ar = $(".detail_interactArea_like a");
ar.css({
'background-image' : 'url(../img/liked.gif)'
});
ar.attr("href", "javascript:void(0);");
love_count++;
ar.html("已喜欢<span>(" + love_count + ")</span>");
}
});
}
function show_gist(){
$("#gist_span").show();
$("#gist_input").focus().select();
}
上一篇:庞锋 OpenCV 视频 学习进度备忘


下一篇:Android——仿QQ聊天撒花特效