JavaScript就是所谓的客户端脚本语言,是一种在互联网浏览器(浏览器也称为Web客户端,因为它连接到Web服务器上,以下载页面)内部运行的计算机编程语言。JavaScript的工作方式很有趣。普通网页内都会插入一些JavaScript代码。当浏览器加载该页面时,浏览器的内置解释器将读取并运行它在该页面中找到的JavaScript代码。
做Web开发已经四年,或多或少积累了一些JavaScript脚本。比如,限制input只允许输入数字的脚本;敲回车自动转到下一个控件,相当于Tab键的作用一样;因为JavaScript数值运算的结果常常不是我们想要的,还得有浮点数运算(加减乘除)函数。每次有JavaScript需求时,常常是在网上找需要的脚本,直接拷贝到aspx文件中,或者新建JavaScript文件,然后添加引用
<script src="/UploadFiles/2021-04-02/JScript.js">
最近公司的项目不忙,空闲的时间赶忙补习一下脚本的知识。网上有很流行的JQuery脚本库,在园子里也有大量的文章讨论怎么去用。以我亲身体会,JavaScript和正则表达式一样,常学常忘。学过的知识不用,很快就会忘记。特别是和应用相关的内容,比如PageMethods怎么用,客户短回调如何实现,如何用JavaScript调用Web服务,在项目中用过多次,但是一被同事问起来,还是模模糊糊的,很难说出个所以然来。我有一个办法是制作demo,把各种效果的demo做好,分门别类的放在一起,然后用的时候去搜索,这样可以节省很多时间。另外一种办法就是今天这篇文章提到的,把做过的JavaScript整理一下,制作成比较通用的脚本库,方便复用。整理的含义是,对函数进行适当的调整,让它能不仅能满足当前项目的需求,还要能满足未来项目的需求,另一个含义是要规范命名和组织结构,写好样例代码,用起来的时候方便。有时候在网上下载了很多JavaScript实用脚本,但是忘记下载它的测试脚本,不知道怎么去用,还不如到网上重新搜索来得方便。
JavaScript被定义为一种基于对象的脚本语言,一方面它以DOM对象模型和DOM对象中的方法为基础,另一方面,它又不具备面向对象语言的继承,多态的特性。ASP.NET AJAX对JavaScript进行了扩展,使我们可以以面向对象的方式来组织JavaScript脚本。我这里的主要工作是封装,把现有的代码封装起来,方便下次复用。于是,有两种方法来组织现有的JavaScript代码库。
我以JavaScript中倍受争议的浮点运算中的加法和减法运算为例子,看看如何把它们封装起来
JavaScript风格
function Math() { } //加法 Math.prototype.Add=function(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)) return (arg1*m+arg2*m)/m } //减法 Math.prototype.Subtraction=function(arg1,arg2){ var r1,r2,m,n; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)); n=(r1>=r2)".")[1].length}catch(e){r1=0} try{r2=right.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)) return (left*m+right*m)/m } //减法函数 Subtraction: function(){ var r1,r2,m,n; try{r1=left.toString().split(".")[1].length}catch(e){r1=0} try{r2=right.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)); n=(r1>=r2)"_blank" href="http://dean.edwards.name/weblog/2007/03/rules/ ">http://dean.edwards.name/weblog/2007/03/rules/
我把它翻译出来,供大家参考
1 使用方法不要过于繁琐。
2 避免使用Object.prototype
3 不要做过度的扩展
4 遵守标准。
5 向优秀的JavaScript创作者看齐
6 保持灵活可变 7 管理好内存,避免内存泄露。
8 避免与浏览器相关的hack
9 保持类库简洁
10 让类库保持可预知。比如,虽然没有查看文档,也应该能猜测到Math是处理和数学运算相关的内容
11 加分的规则:文档;尽可能多的使用命名空间组织代码,使之容易被记住;我的水平很一般的,很普通的一个程序员。所以,不要向我要代码。我给你了,你还要花时间去看;而且我的代码没有文档,你读不懂怎么办呢。与其这样,为何不把你自己手头有的JavaScript 整理一下,况且你手里头有的JavaScript ,被你实际用过,你对他肯定熟悉。也不要推荐JQuery,它不是我的目的。
我的目的是教你组织整理现有的JavaScript 脚本库,把手头已有资源用好就很不错了。
测试代码下载: http://xiazai.jb51.net/201509/yuanma/Math-Test(jb51.net).rar
补充一个常见的问题:如果把JavaScript 放到外部文件中,运行时可能会提示“找不到对象”
这个问题是由文件编码导致的。要让JavaScript 脚本文件的编码和HTML页面的文件编码保持一致
点击文件-->另存为选项,把两者存储为同样的编码格式推荐用VS IDE编写脚本,这样可以使用IDE提供的智能提示支持
如果是用Dreamweaver编写脚本,它也提供了智能提示
以上内容给大家介绍了JavaScript脚本库编写的方法,希望大家喜欢。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 群星《青春重置计划9新的凡人歌》[320KMP3][89.41MB]
- 苏曼《苏曼的夜晚HQII》[低速原抓WAV+CUE]
- 【电影原声】汉斯·季默《星际穿越》2014[FLAC+CUE整轨]
- 诹访内晶子AkikoSuwanai巴赫:小提琴协奏曲《J.S.BachViolinConcertos》(flac)
- 王力宏《十八般武艺》[低速原抓WAV+CUE]
- 王力宏《十八般武艺》[低速原抓WAV+CUE]
- 【爵士乐】VA-2024-ParamountJazzLoungeChillingExperience(FLAC)
- 群星《离歌 网剧原声带》[320K/MP3][249.78MB]
- 群星《离歌 网剧原声带》[FLAC/分轨][538.53MB]
- 群星《承欢记 电视剧影视原声带》[320K/MP3][109.99MB]
- 【欧美乡村】JohnnyLee-2024-13thOfJulyandEmotions(FLAC)
- 【流行爵士】PattiAustin-2024-LoveSongs(FLAC)
- 【爵士乐】VA-2024-SupremeLoungeChillSelectionJazzyVibeTunes(FLAC)
- 群星《承欢记 电视剧影视原声带》[FLAC/分轨][219.8MB]
- 群星《乘风2024 第1期》[320K/MP3][110.09MB]