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获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
jquery中checkbox全选失效的解决方法
Dec 26 Javascript
基于JavaScript创建动态Dom
Dec 08 Javascript
Angular.Js中ng-include指令的使用与实现
May 07 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
Mar 07 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
Apr 10 Javascript
vue实现百度语音合成的实例讲解
Oct 14 Javascript
微信小程序后端(java)开发流程的详细步骤
Nov 13 Javascript
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
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
7个超级实用的PHP代码片段
2011/07/11 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
JavaScript表单常用验证集合
2008/01/16 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
python3监控CentOS磁盘空间脚本
2018/06/21 Python
对python多线程与global变量详解
2018/11/09 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
python安装本地whl的实例步骤
2019/10/12 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
python数据抓取3种方法总结
2021/02/07 Python
C#面试题
2016/05/06 面试题
工作目标责任书
2014/07/23 职场文书
2014年关工委工作总结
2014/11/17 职场文书
2016春节家属慰问信
2015/03/25 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
Go并发4种方法简明讲解
2022/04/06 Golang