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监听鼠标点击和键盘点击事件并自动跳转页面
Sep 24 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 Javascript
简介JavaScript中的push()方法的使用
Jun 09 Javascript
轻松实现javascript图片轮播特效
Jan 13 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
Apr 06 Javascript
Bootstrap Img 图片样式(推荐)
Dec 13 Javascript
react-native-tab-navigator组件的基本使用示例代码
Sep 07 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 Javascript
小程序实现留言板
Nov 02 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
Dec 25 Javascript
layui中select,radio设置不生效的解决方法
Sep 05 Javascript
JS精髓原型链继承及构造函数继承问题纠正
Jun 16 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
世界收音机发展史
2021/03/01 无线电
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
PHP6 先修班 JSON实例代码
2008/08/23 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
python 计算文件的md5值实例
2017/01/13 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Python3 元组tuple入门基础
2020/02/09 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
服务承诺书怎么写
2014/05/24 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python