js 编写规范


Posted in Javascript onMarch 03, 2010

在一个项目中大量使用js,工程项目与网站开发有一些不一样,在我接触的工程项目中普遍使用js 不够多,大部分客户端可做事,交给了服务端,而且在使用js时不够规范,很容易造成代码难以阅读、内存泄漏问题,不注意js 输写方式。而在网站开发中(尤其一些大网站,js输出的非常漂亮、完美无论使用jquery,还是prototype 框架,还是不用框架,都有自己良好一套东东可用)
js输写最好还是可以面向对象方式 用类方向进行包装 js输写两种方式 闭包 原型
闭包:(借用的一个例子)

function Person(firstName, lastName, age) 
{ 
//私有变量: 
var _firstName = firstName; 
var _lastName = lastName; 
//公共变量: 
this.age = age; 
//方法: 
this.getName = function() 
{ 
return(firstName + " " + lastName); 
}; 
this.SayHello = function() 
{ 
alert("Hello, I'm " + firstName + " " + lastName); 
}; 
}; 
var BillGates = new Person("Bill", "Gates", 53);

原型:(借用的一个例子)
//定义构造函数 
function Person(name) 
{ 
this.name = name; //在构造函数中定义成员 
}; 
//方法定义到构造函数的prototype上 
Person.prototype.SayHello = function() 
{ 
alert("Hello, I'm " + this.name); 
}; 
//子类构造函数 
function Employee(name, salary) 
{ 
Person.call(this, name); //调用上层构造函数 
this.salary = salary; //扩展的成员 
}; 
//子类构造函数首先需要用上层构造函数来建立prototype对象,实现继承的概念 
Employee.prototype = new Person() //只需要其prototype的方法,此对象的成员没有任何意义! 
//子类方法也定义到构造函数之上 
Employee.prototype.ShowMeTheMoney = function() 
{ 
alert(this.name + " $" + this.salary); 
}; 
var BillGates = new Person("Bill Gates"); 
BillGates.SayHello(); 
var SteveJobs = new Employee("Steve Jobs", 1234); 
SteveJobs.SayHello();

这两种方法各有优缺点,第一种看起来更像一个类 每个对象设置一份方法有很大浪费,而且资源回收不利,第二种方法,看起来不是很漂亮,可性能很好(不过如果你使用prototype框架,就可以完美解决结构与性能问题了。)

实际在使用jquery 还是prototype问题上,我的一点点体会是 jquery使用闭包方式,而prototype当然原型,jquery更加适合对单个对象操作,而prototype更适合做一些客户端控件。实际我更喜欢在项目中使用jquery 而网站上更关注prototype

Javascript 相关文章推荐
列表内容的选择
Jun 30 Javascript
Tab页界面,用jQuery及Ajax技术实现
Sep 21 Javascript
javascript对数组的常用操作代码 数组方法总汇
Jan 27 Javascript
基于JQuery的抓取博客园首页RSS的代码
Dec 01 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
JS实现添加,替换,删除节点元素的方法
Jun 30 Javascript
bootstrap table 数据表格行内修改的实现代码
Feb 13 Javascript
react+redux的升级版todoList的实现
Dec 18 Javascript
layui select动态添加option的实例
Mar 07 Javascript
JavaScript实现联动菜单特效
Jan 07 Javascript
详解JVM系列之内存模型
Jun 10 Javascript
jquery validation插件表单验证的一个例子
Mar 03 #Javascript
Jquery 实现Tab效果 思路是js思路
Mar 02 #Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
Mar 02 #Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
Mar 02 #Javascript
jQuery对象和DOM对象的相互转化实现代码
Mar 02 #Javascript
Javascript 自定义类型方法小结
Mar 02 #Javascript
Javascript Cookie读写删除操作的函数
Mar 02 #Javascript
You might like
用文本文件制作留言板提示(上)
2006/10/09 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
Javascript 强制类型转换函数
2009/05/17 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
Python定时执行之Timer用法示例
2015/05/27 Python
python实现两个文件合并功能
2018/04/01 Python
python2.7实现爬虫网页数据
2018/05/25 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
python Django的web开发实例(入门)
2019/07/31 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
外贸英语毕业生自荐信
2013/11/14 职场文书
大四毕业生自荐书
2014/07/05 职场文书
作文批改评语
2014/12/25 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
旅游项目合作意向书
2015/05/08 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
幸福终点站观后感
2015/06/04 职场文书
运动会报道稿大全
2015/07/23 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript