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 相关文章推荐
利用javascript/jquery对上传文件格式过滤的方法
Jul 25 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
Dec 27 Javascript
解析JavaScript中的标签语句
Jun 19 Javascript
javascript中自定义对象的属性方法分享
Jul 12 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
Feb 04 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
使用puppeteer爬取网站并抓出404无效链接
Dec 20 Javascript
Python版实现微信公众号扫码登陆
May 28 Javascript
JavaScript编写开发动态时钟
Jul 29 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
详解php协程知识点
2018/09/21 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
QQ登录简单实现代码
2021/03/09 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
办公室打字员岗位职责
2014/04/16 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
门面房租房协议书
2014/08/20 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书