摘要: 本文只针对UML菜鸟,你是中鸟、老鸟,请直接无视本文!摘要:你只需要阅读完本章,就能从宏观上掌握UML的知识,在你的脑袋中形成一张UML的蓝图。你能全面了解UML的基本知识,UML的各种图的用途和概况,你能和实际工作遇到的问题联系起来,帮助你进一步规划下一步的学习。本文是新书《活用UML——需求分析高手》中的第1章“大话UML”,本书更多资料可参考:http://www.umlonline.org/school/forum-140-1.html第2章已经在博客园发布,文章名字叫:让人耗尽脑汁的需求分析工作文章链接:http://www.cnblogs.com/umlonline/archive 阅读全文
posted @ 2011-10-27 14:06 tokeep 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 今天和一个朋友讨论到JavaScript中一些引用数据类型的复制问题,由于引用数据类型是传址复制,如果想达到真正的“复制”效果(即修改一个 变量的值不会影响另一个的值),就不能使用像 var b = a; 这样的语句,对于引用类型来说,这样复制的结果就是当a的值发生变化时,b也会发生同样的变化,因为这时a真正的值只是对一个地址的引用,b复制到的也只 是这个相同地址的引用而已,于是当a和b其中一个被修改之后,另一个也随之改变,有些时候这并不是我们想要的。这样的问题遇到最多的就是在处理数组和json对象时。对于数组,我们有很方便的内置方法可以使用: var arrayA = [1,2]; ... 阅读全文
posted @ 2011-10-27 14:05 tokeep 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 在 JavaScript 中,Date 对象的方法远远不及其它语言多,很多常用的方法都没有提供,上次在做 Calendar 项目的时候,自己又添加了一些方法,今天整理了一下,写成了一个 dateHelper 对象,下次用的时候就不用再写了。var dateHelper = { isLeapYear: function(year){ //是否为闰年 if ((year % 400 == 0) || (year % 100 != 0) && (year % 4 == 0)) { return true; } els... 阅读全文
posted @ 2011-10-27 12:21 tokeep 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 在JavaScript中,通过prototype扩展内置对象会导致一个问题,看看下面的例子:Object.prototype.extendFn = function(){ return false;}var a = { "aa" : "1"}for( var i in a ){ //这时会遍历出"aa"和"extendFn" alert(i);}在这个例子中,我们通过 prototype 为 Object 扩展了一个名为 extendFn 的方法,接着创建了一个对象 a ,在试图遍历该对象的时候,刚才扩展的 ext 阅读全文
posted @ 2011-10-27 12:20 tokeep 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 今天项目中需要用到动态加载 CSS 文件,经过一番折腾终于搞定,回家整理了一下,顺便融合了动态加载 JS 的功能写成了一个对象,先上代码:var dynamicLoading = { css: function(path){ if(!path || path.length === 0){ throw new Error('argument "path" is required !'); } var head = document.getElementsByTagName('head')[0]; var link = document.crea 阅读全文
posted @ 2011-10-27 12:19 tokeep 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 有着“字符串处理利器”美称的正则表达式在 JavaScript 中同样扮演了一个重要的角色,开发人员使用他方便地对字符串进行查找、替换等等操作,然而对于绝大多数人而言正则表达式并不是一门简单的语言,编写规则稍 微复杂的正则往往需要花费大量的时间和精力,好在它具有很强的独立性,与程序逻辑本身没有牵连,这意味着如果你知道一个符合需求且有效的正则表达式,那么 你可以完全放心的复制并粘贴到你的代码中。于是在平时收集一些常用的正则表达式就变成一件非常有意义的事情。URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/Ema 阅读全文
posted @ 2011-10-27 12:18 tokeep 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 可以说数组在任何一门编程语言中都是一个极其重要的工具,在 JavaScript 也是如此,但遗憾的是原生 JavaScript 中对数组提供的方法少之又少,这在一定程度上降低了开发效率,如果你也为此所困扰,那么下面的代码对于缓解这样的尴尬局面也许能有一点帮助。在开始对数组进行原型扩展之前,非常有必要添加一个方法来验证一个变量是否为数组类型。该方法接受一个任意数据类型的变量作为参数,如果是数组则返回true,否则,你懂得。function isArray(a){ return a.constructor === Array ? true : false;}// Usage :var isArra 阅读全文
posted @ 2011-10-27 12:18 tokeep 阅读(296) 评论(0) 推荐(0) 编辑
摘要: JSON 自从被人们认识以来,就凭借其简易的编码解码方式,良好的可读性、可扩展性以及与 JavaScript 暧昧的关系,逐步吞噬掉了 XML 的空间,现在已经成为 AJAX 数据交换的绝对主力。但是,如果你从后台返回中得到了下面的 JSON,那么这可能会在 Chrome 浏览器中出现一些小问题,这正是本文所要讨论的。var people = { "Zhang": {"age":28, "location": "成都"}, "Lee": {"age":32, "lo 阅读全文
posted @ 2011-10-27 12:12 tokeep 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 编程中无可避免地要和数字打交道,但在 JavaScript 中,对数字的操作往往在某些时候可能会让人感到一些迷惑,比如说 parseInt 方法就是一个典型的例子。1. parseInt 的进制问题parseInt 是 JavaScript 中非常常用的一个方法,它用来将数字型的字符串转换为数字类型的整数,一般使用这个函数不会出现什么问题,但有些情况例外,比如要转换的字符串为 "08","09"。下面的代码展示了 parseInt 处理字符串"08"时不同的返回结果。导致这种结果的原因在于,可能很少有人注意到 parseInt 方法实 阅读全文
posted @ 2011-10-27 12:10 tokeep 阅读(181) 评论(0) 推荐(0) 编辑
摘要: URL在大多数时候都是后端程序员关心的事情,但有的时候前端程序员也需要与之打交道,可能很多人都做过的一件事就是通过对 href 属性的写操作达到跳转页面的目的,不过这并不是今天要讨论的全部话题。对于 URL,我们需要了解更多,因为我们的开发中可能会需要提取URL的部分信息来做不同的事情,事实上这也是与后端交互的一种独特的方式,当然这肯定是安全 的,当请求被返回,关于 url 的信息就被记录在了 Window 对象的 Location 属性中,取值的结果并不随着用户手动修改地址栏中的字符而发生任何改变,这一点是很重要的。了解了这些内容,那么我们从下面这张图开始吧:不要被那些色块迷惑了,图片中间那 阅读全文
posted @ 2011-10-27 12:08 tokeep 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 昨天zchiy2k问 我关于 jQuery 如何分别处理DOM加载完成和文档加载完成的问题,我一时没回答上来,因为在开发中我还真是从来没有处理过等待页面所有内容加载完毕才执行的情况。其实 jQuery 中处理文档加载完毕就是用的平时非常常用的 load 事件,只不过监听 window。今天整理了一下,顺便鄙视下自己做前端开发那么久连这个都还不知道。页面完全加载是指页面上所有内容完全加载,包括窗口,框架,对象和图像等等,在 jQuery 中通过监听 window 的 load 事件达到这一目的。这个事件会延迟 JavaScript 代码执行的时间,因为页面中可能包含大量的图像,甚至 Flash。 阅读全文
posted @ 2011-10-27 12:05 tokeep 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 在财务或者其他一些特殊的领域,客户可能需要处理一串较长的数字,这个过程中容易产生一些错误,比如 1000000000 这个数字,普通人几乎不可能一眼看出这串数字到底表示多少,但如果写成10亿,就一目了然了。在最近的一个项目中就遇到了这样的问题,我们为用户提供了一 个文本框来输入一笔交易的金额,因为这涉及到关键信息,所以我们不希望用户在填写这一数字的时候出现任何错误或者疏忽,于是我们设计为监听文本框的键盘事 件,并对文本框里的输入进行即时的反馈: $('input').keyup(function(){ var moneyFormat = cnNumFormat($(... 阅读全文
posted @ 2011-10-27 12:03 tokeep 阅读(314) 评论(0) 推荐(0) 编辑
摘要: Math 对象下的方法想必大家都运用得非常的熟悉,但是 Math 对象的属性却很少被用到,这些属性是一些常见的数学运算结果集,可以理解为一组常量,尽管在目前的 JavaScript 中并没有这个概念。属性约值说明Math.E2.718常量 eMath.LN20.6932 的自然对数Math.LN102.30210 的自然对数Math.LOG2E1.442以 2 为底 e 的对数Math.LOG10E0.434以 10 为底 e 的对数Math.PI3.14159常量 πMath.SQRT1_20.7070.5 的平方根Math.SQRT21.4142 的平方根了解甚至记住他们,说不定在什么时候 阅读全文
posted @ 2011-10-27 12:01 tokeep 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 良好的习惯总是让人受益匪浅,在编写代码的时候,良好的习惯会使得开发更加地高效,减少出错的几率,甚至提高代码的运行效率,下面是一些在 JavaScript 代码编写中应该注意的几个问题,它们都非常容易遇到,却又可能非常容易地被忽略。1. 减少不必要的全部变量关于全局变量,这是 JavaScript 非常糟糕的一个特性,它非常地容易被创建,特别是被不小心地创建。在程序变得复杂,或者同时运行多个程序的时候,它可能带来难以调试的错误。在定义变量前加上 var,是首先应该注意并警惕的。function fn(){ var a = 1; //局部变量 b = 1; //全局变量}2. ... 阅读全文
posted @ 2011-10-27 12:01 tokeep 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 图像的旋转是目前的 web 应用程序中比较常见的一种操作。曾经在做这样的程序时,思路比较狭窄,总是认为扔给服务器端处理比较稳妥。这种方法大致的过程是这样的:当用户点击一种旋 转方向,立即发出一个 Ajax 请求,告诉后端要旋转的图像和旋转的角度,再由后端通过一定的工具(如 PHP 的 GD 库)生成新的图像再进行存储并向浏览器返回新的图像地址,这时使用 JavaScript 对图像的 src 属性进行更新即可。这个过程对于前端来说非常的简单,它大概像下面这样:$.ajax({ url : 'url.php', type : 'GET', data : { deg 阅读全文
posted @ 2011-10-27 11:33 tokeep 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 有的时候我们可能不得不使用 js 来处理 html entities,例如把 > 这样的内容转化成 > 符号,或者是相反的操作。如果你不幸遇到了这样的需求,下面的内容也许会有所帮助。unescapeHtmlEntities 的实现非常简单,创建一个节点元素,然后将字符串写入这个元素的 innerHTML 属性,最后返回这个元素的文本内容。调用下面的函数时传参'>',得到的结果将会是'>'function unescapeHtmlEntities(str) {var tempEle = document.createElem 阅读全文
posted @ 2011-10-27 11:32 tokeep 阅读(458) 评论(0) 推荐(0) 编辑
摘要: js 与 jquery 事件对象 比较(转) 收藏 一.摘要事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解.二.前言本 篇文章是至今为止本系列内容最多的一篇, 足以可见其重要性. 大家反映要多列举示例. 我会在时间允许的情况下尽量多列举示例. 真正的投入生产使用的实例暂时还无法加入到文章中, 但是可能最后我会列举一些作品供大家借鉴. 另外本人水平有限, 因为我不是UI设计师. 文章可能有错误的地方, 希望大家帮忙指出, 一起学习一起进步. 在技术的世界里我们是没有任何利益瓜葛. 希望大家都抱着彼此鼓励的心态, 对于回 阅读全文
posted @ 2011-10-27 11:29 tokeep 阅读(427) 评论(0) 推荐(0) 编辑
摘要: DOM 的各种事件为丰富的交互提供了可能,在现在的 web 应用程序中,事件处理程序越来越多,越来越复杂,页面中随处可见的事件监听已经司空见惯,但这引出了一个性能的问题,事件监听得越多,页面运行性能就越差。主要原因来自两个方面:1. 每添加一个事件监听,载入页面时都会增加一次对被监听节点的访问,这无疑增加了页面完全准备就绪所需的时间;2. 每一个事件监听函数都会占用内存,而 JavaScript 并不具备分配内存的权利,有限的内存如果被事件监听函数占用得越多,页面性能下降得也越多。假如有下面的一个无序列表,需要在每一个 li 被点击之后添加或移除一个名为 'active' 的 阅读全文
posted @ 2011-10-27 11:25 tokeep 阅读(208) 评论(0) 推荐(0) 编辑
摘要: $conn=mssql_connect("127.0.0.1","user","passwd");mssql_select_db("mydb");$stmt=mssql_init("pr_name",$conn);//$a=50001;mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR); //用于直接返回return -103此类的值。mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,tru 阅读全文
posted @ 2011-10-27 09:48 tokeep 阅读(411) 评论(0) 推荐(0) 编辑