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 相关文章推荐
文本框中,回车键触发事件的js代码[多浏览器兼容]
Jun 07 Javascript
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
ajax更新数据后,jquery、jq失效问题
Mar 16 Javascript
Javascript/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
js写的方法实现上传图片之后查看大图
Mar 05 Javascript
jQuery中find()方法用法实例
Jan 07 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
Feb 26 Javascript
javascript中substring()、substr()、slice()的区别
Aug 30 Javascript
Bootstrap Chart组件使用教程
Apr 28 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
Jun 13 Javascript
vue-lazyload使用总结(推荐)
Nov 01 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
Apr 03 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
php在线代理转向代码
2012/05/05 PHP
PHP的引用详解
2015/02/22 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
关于VPN
2012/06/10 面试题
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
毕业生自荐书
2014/02/02 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
小学课改工作总结
2015/08/13 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB