JS这样的写法有什么好处
var listBox = {};
listBox.chickChkBox = function(chk){
chk = $(chk);
if(chk.attr("checked")){
chk.parents("tr").find("td").addClass("choose");
chk.parents("td").attr("class","chk_on");
}else{
chk.parents("tr").find("td").removeClass("choose");
chk.parents("td").attr("class","chk_off");
}
}
listBox.choose = function(){
var courseId = $("#courseId").val();
if(courseId==""){
alert("参数缺失.");
return;
}
var chks = $(".courseId:checked");
if(chks.length<1){
alert("请选择要挂接的培训班.");
return;
}
var str = "";
for(var i = 0; i < chks.length; i++){
str += "refCourseId="+$(chks.get(i)).val()+"&";
}
str += "formMap.COURSE_ID="+courseId;
$.ajax({
cache:false,
type:'POST',
dataType:'text',
url:'/course/cmscoursereferrer/addCourseRefAjax.do',
data:str,
success:function(rst){
rst = new Function("return " + rst)();
if(rst.status){
alert("绑定成功.");
window.close();
}else{
alert("绑定失败.");
}
}
});
}
<button type="button" onclick="listBox.choose();">绑定选择的课程</button>
[解决办法]
感觉这个写法好像不太好,有点多余,
listBox=({
chickChkBox:function(){
},
choose:function(){
}
})我喜欢看这种方式,不过我对JS也很菜鸟, 只是习惯问题,最近刚在大叔那里买了本,javascript设计模式在看。
[解决办法]
这就是面向对象的JS编程方式。
最直观的就是这样实现了命名空间,便于组织
你直接写的话,funA是全局的,就不能再有一个函数叫funA,而且函数多了也没有组织,比如弹窗的一系列方法 和属性,你可以封装到var Dialog = {};里面
参考:
http://msdn.microsoft.com/zh-cn/magazine/cc163419.aspx
http://www.blogjava.net/lizongbo/archive/2006/06/19/53798.html
[解决办法]
这个叫啥,封装!不错。
[解决办法]
没啥好处,就加个prefix而已。
------解决方案--------------------
简单的封装,减少变量命名冲突。。
[解决办法]
这种是对象,匿名函数写法,听说速度更快,更节省内存.
[解决办法]
命名空间,方便组织修改代码,避免函数名冲突
楼主 可以阅读下
编写高质量代码--Web前端开发修炼之道
[解决办法]
这样很形象的代表你在 listBox 下有一组关联的操作或者属性
至少copy和组织代码的时候 会很简单
而且以后方便重构成对象化设计
[解决办法]
3楼的解释比较好。
用一个对象(你代码中的listBox)来作为命名空间,把彼此有关系或者共同完成某个功能的一些方法(你代码中的chickChkBox,choose函数)或属性都挂靠到这个对象上。
这样既避免了污染全局变量,又实现了简单的封装,从而代码变得简洁和规范。