摘要: (转自MSDN http://msdn.microsoft.com/en-us/bb398781(zh-cn).aspx)ASP.NET 中的 AJAX 功能包括一个完整的多层客户端事件模型。Sys.Application 类提供应用程序级别的事件。Sys.WebForms.PageRequestManager 类提供与涉及部分页呈现的页面部分相关的事件。各个组件(如控件和行为)具有各自的事件。有...阅读全文
posted @ 2010-01-04 18:21 DreamsHunter 阅读(170) 评论(0) 编辑

转自:http://bokee.shinylife.net/blog/article.asp?id=455

prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解:

  首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类。我们所常见的类包括:数组变量(Array)、逻辑变量(Boolean)、日期变量(Date)、结构变量(Function)、数值变量(Number)、对象变量(Object)、字符串变量(String) 等,而相关的类的方法,也是程序员经常用到的(在这里要区分一下类的注意和属性发方法),例如数组的push方法、日期的get系列方法、字符串的split方法等等,

  但是在实际的编程过程中不知道有没有感觉到现有方法的不足?prototype 方法应运而生!下面,将通过实例由浅入深讲解 prototype 的具体使用方法:


1、最简单的例子,了解 prototype:
(1) Number.add(num):作用,数字相加
实现方法:Number.prototype.add = function(num){return(this+num);}
试验:alert((3).add(15)) -> 显示 18


(2) Boolean.rev(): 作用,布尔变量取反
实现方法:Boolean.prototype.rev = function(){return(!this);}
试验:alert((true).rev()) -> 显示 false

是不是很简单?这一节仅仅是告诉读者又这么一种方法,这种方法是这样运用的。


2、已有方法的实现和增强,初识 prototype:
(1) Array.push(new_element)
  作用:在数组末尾加入一个新的元素
  实现方法:
  Array.prototype.push = function(new_element){
        this[this.length]=new_element;
        return this.length;
    }
  让我们进一步来增强他,让他可以一次增加多个元素!
  实现方法:
  Array.prototype.pushPro = function() {
        var currentLength = this.length;
        for (var i = 0; i < arguments.length; i++) {
            this[currentLength + i] = arguments[i];
        }
        return this.length;
    }
  应该不难看懂吧?以此类推,你可以考虑一下如何通过增强 Array.pop 来实现删除任意位置,任意多个元素(具体代码就不再细说了)

(2) String.length
  作用:这实际上是 String 类的一个属性,但是由于 JavaScript 将全角、半角均视为是一个字符,在一些实际运用中可能会造成一定的问题,现在我们通过 prototype 来弥补这部不足。
  实现方法:
  String.prototype.cnLength = function(){
        var arr=this.match(/[^\x00-\xff]/ig);
        return this.length+(arr==null?0:arr.length);
    }
  试验:alert("EaseWe空间Spaces".cnLength()) -> 显示 16
  这里用到了一些正则表达式的方法和全角字符的编码原理,由于属于另两个比较大的类别,本文不加说明,请参考相关材料。


3、新功能的实现,深入 prototype:在实际编程中所用到的肯定不只是已有方法的增强,更多的实行的功能的要求,下面我就举两个用 prototype 解决实际问题的例子:
(1) String.left()
  问题:用过 vb 的应该都知道left函数,从字符串左边取 n 个字符,但是不足是将全角、半角均视为是一个字符,造成在中英文混排的版面中不能截取等长的字符串
  作用:从字符串左边截取 n 个字符,并支持全角半角字符的区分
  实现方法:
  String.prototype.left = function(num,mode){
        if(!/\d+/.test(num))return(this);
        var str = this.substr(0,num);
        if(!mode) return str;
        var n = str.Tlength() - str.length;
        num = num - parseInt(n/2);
        return this.substr(0,num);
    }
  试验:
     alert("EaseWe空间Spaces".left(8)) -> 显示 EaseWe空间
     alert("EaseWe空间Spaces".left(8,true)) -> 显示 EaseWe空
  本方法用到了上面所提到的String.Tlength()方法,自定义方法之间也能组合出一些不错的新方法呀!

(2) Date.DayDiff()
  作用:计算出两个日期型变量的间隔时间(年、月、日、周)
  实现方法:
  Date.prototype.DayDiff = function(cDate,mode){
        try{
            cDate.getYear();
        }catch(e){
            return(0);
        }
        var base =60*60*24*1000;
        var result = Math.abs(this - cDate);
        switch(mode){
            case "y":
                result/=base*365;
                break;
            case "m":
                result/=base*365/12;
                break;
            case "w":
                result/=base*7;
                break;
            default:
                result/=base;
                break;
        }
        return(Math.floor(result));
    }
  试验:alert((new Date()).DayDiff((new Date(2002,0,1)))) -> 显示 329
     alert((new Date()).DayDiff((new Date(2002,0,1)),"m")) -> 显示 10
  当然,也可以进一步扩充,得出响应的小时、分钟,甚至是秒。

(3) Number.fact()
  作用:某一数字的阶乘
  实现方法:
  Number.prototype.fact=function(){
        var num = Math.floor(this);
        if(num<0)return NaN;
        if(num==0 || num==1)
            return 1;
        else
            return (num*(num-1).fact());
    }
  试验:alert((4).fact()) -> 显示 24
  这个方法主要是说明了递归的方法在 prototype 方法中也是可行的!

posted @ 2009-12-28 17:45 DreamsHunter 阅读(18) 评论(0) 编辑
摘要: 对单纯的人来说,成熟是诱惑,象蛇的啮咬,痛入骨髓。而蛇毒,是一辈子疗不好的伤。 是罂粟,浅尝辄止,却再放不下。任其荡气回肠,百转千回。 对成熟的人来说,单纯是味精。在纷繁芜杂的社会,加一剂调料,偶尔神清气爽,却不纵容。因为味精再好也不过一剂调味品,成熟的人更加理性,也更加世故。 单纯的人因了成熟宁愿飞蛾扑火,在纵身一跃的瞬间燃烧殆尽,没有了退路,丢了整整一个季节。 成熟的人习惯了逃跑,在惹火烧身的时候消声匿迹,因为不肯担当。 这出戏,对单纯的人来说,是事故, 对成熟的人来说,是世故。 阅读全文
posted @ 2009-12-28 13:31 DreamsHunter 阅读(134) 评论(0) 编辑
摘要: 读到这篇文章,心中很不是滋味。难道我就是那个被愚蠢的教育和误人子弟的技术杂志污染的家伙?不甘,不甘那! 我坚信,坚持提高自己总是对的。我要坚持自己的架构师之梦!!阅读全文
posted @ 2009-10-27 15:30 DreamsHunter 阅读(40) 评论(1) 编辑
 

1、人之所以痛苦,在于追求错误的东西。

2、与其说别人让你痛苦,不如说自己修行不够。

3、如果你不给自己烦恼,别人永远都不可能给你烦恼,因为那是在你的内心,你放不下。

4、好好管教你自己,不要管别人。

5、不宽恕众生,不原谅众生,那是苦了自己。

6、不要说别人可怜,自己更可怜;也不要说自己不幸,别人更不幸。

7、学佛的人是对自己的良心交代,不是做给别人看的。

8、你永远都要感谢给你逆境的众生。

9、永远不要看众生的错,那会污染你自己。

10、每一种创伤,都是成熟。

11、一切恶法都是虚妄的,你不要太自卑你自己;一切善法也是虚妄的,你也不要太狂妄你自己。

12、医生难医命终之人,佛陀难度无缘的众生。

13、毁灭人只需要一句话,培植人却需要千句话,请口下留情。

14、不要在你的智慧中夹杂着傲慢;不要是你的谦虚心缺少智慧。

15、多用心去倾听别人怎么说,不要急于表达自己的想法。

16、同样的瓶子,你为什么要装毒药呢?同样的心灵,你为什么充满着烦恼呢?

17、这个世间只有圆滑,没有圆满。

18、多一份精力去注意别人,就少一份精力来注意自己。

19、要了解一个人,只要看他的出发点和目的地是否相同,就可以知道他是否真心。

20、名声和尊严是来自于真才实学,有德自然香。

21、能为别人设想的人永不寂寞。

22、你硬要把单纯的事情看的很严重,那样子你会很痛苦。

23、沉默是诽谤最好的答复。

24、当你的错误显露时,可不要发脾气,别以为任性和吵闹可以隐藏和克服你的缺点。

25、愚痴的人一直想让别人了解他,有智慧的人却在努力了解自己。

26、来是偶然的,走是必然的,所以你必须随缘不变,不变随缘。

27、只有面对现实才能超越现实。

28、不要因为小小的争执远离了你的至亲好友;也不要因为小小的怨恨,忘了别人的大恩。

29、感谢上苍我所拥有的,感谢上苍我所没有的。

30、所谓放下,就是去除分别心,是非心,得失心,执著心。

31、不是某人使我烦恼,而是我拿某人的言行来烦恼自己。

32、不要刻意地去曲解别人的善意,要往好的地方想。

33、我感觉富有,并不是我拥有的多,而是我要求的少。

34、世界原本就不属于你,因此你用不着抛弃,要抛弃的是你心中的执著。万物皆我所用,但非我所属。

35、当你用烦恼心来面对事物时,会觉得一切都是业障,世界变得丑陋可恨。

36、人家怕你并不是一种福,人家欺你,也不是一种辱。

37、我们确实有如是的优点,但也要隐藏几分,那叫做涵养。

38、是非天天有,不听自然无;是非天天有,不听还是有;是非天天有,看你怎么办?

39、说话不要有攻击性,不要带杀伤力,不夸己能,不扬人恶,自然能化敌为友。

40、正人行邪法,邪法亦正;邪人行正法,正法亦邪,一切唯心造。

posted @ 2009-07-10 18:13 DreamsHunter 阅读(43) 评论(0) 编辑
摘要: 魔法一:改变你的想法  美国心理学之父威廉·詹姆士对时间行为学的研究发现这样两种对待时间的态度:“这件工作必须完成,但它实在讨厌,所以我能拖便尽量拖”和“这不是件令人愉快的工作,但它必须完成,所以我得马上动手,好让自己能早些摆脱它。”  当你有了动机,迅速踏出第一步是很重要的。不要想立刻推翻自己的整个习惯,只需强迫自己现在就去做你所拖延的某...阅读全文
posted @ 2009-06-09 12:41 DreamsHunter 阅读(127) 评论(2) 编辑
摘要: coolite 将Ext 脚本框架封装成了一系列的asp.net 控件,在保持了ext脚本框架丰富的展示效果的同时,更增加了使用的方便性。只需要拖动coolite控件到页面上,然后几步简单的设置和几段简单的脚本 。丰富的界面效果就呈现在屏幕上。当漂亮的程序呈现在屏幕上时 ,那心情 绝了 。。 除了感叹牛人们的巧妙构思和精湛技艺外,还是感觉自己的水平太逊了,还是需要快马加鞭的往前走哈。。。阅读全文
posted @ 2009-04-18 09:20 DreamsHunter 阅读(1305) 评论(1) 编辑
摘要: 一个人一定要先认清自己,找到目标, 然后才有权去选择自己所要的,和拒绝自己不想要的。 如果自己也不认识自己,也没有目标, 而只有因为自己觉得目前所有的东西不好, 就放下手里的东西,另外去拿一个别的。 那就只是没有主见和见异思迁。 人,都喜欢立下愿望, 喜欢编织奇妙的构想,也喜欢和上帝讨价还价。 从小,我们便被教导,必须珍惜伟大的梦想和希望。 毕竟,人是因梦想而伟大。 可是,世事难料,一切并非如我们...阅读全文
posted @ 2008-11-19 18:25 DreamsHunter 阅读(90) 评论(0) 编辑
摘要: 最近诸事不顺,心情烦躁.常感气血上涌. 特转一些修心,养心的词句阅读全文
posted @ 2008-11-13 20:11 DreamsHunter 阅读(1308) 评论(0) 编辑
摘要: 之前机子装Vista操作系统,Vs2008_Sp1,使用还算顺利.但是Vista以及Win2008对c盘容量的要求是在是太高,之前预留的20G空间根本就不够使,在东删西删凑合使用一个月后,实在是腾不出地方了.遂痛下决心格机,重装. 结果一装就装了6个小时. . 真是苦不堪言哈! 下面把装的过程中遇到的一点需要注意的地方记录下来,希望其他兄弟不要在这里被卡哈 .. 其实就是别忘了在装Vs2008s...阅读全文
posted @ 2008-09-14 03:56 DreamsHunter 阅读(385) 评论(0) 编辑