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实现的所谓的滑动门
May 23 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
javascript中 try catch用法
Aug 16 Javascript
js中javascript:void(0) 真正含义
Nov 05 Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 Javascript
快速处理vue渲染前的显示问题
Mar 05 Javascript
Vue中实现权限控制的方法示例
Jun 07 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
JS快速实现简单计算器
Apr 08 Javascript
JavaScript 防篡改对象的用法示例
Apr 24 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管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
php实现两个数组相加的方法
2015/02/17 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
node.js入门教程
2014/06/01 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
javascript正则表达式总结
2016/02/29 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python中map、any、all函数用法分析
2015/04/21 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
宿舍违规检讨书
2014/01/12 职场文书
初三学习计划书范文
2014/04/30 职场文书
植树节新闻稿
2015/07/17 职场文书