文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Prototype.js 源码学习(不段更新中......)

Prototype.js 源码学习(不段更新中......)

时间:2006-11-24  来源:crazydrill

 我正在学习Prototype.js,这个文件中封装一些方法,比较实用,可以在开发的时候减少脚本的编写。
我参考了一些资料,现将自己对源码的理解写在于些,可以和各位喜欢javascript的人共同交流。我使用的
Prototype.js 1.4.0版本。
(1)/**     * 定义了一个对象类型,基中有两个数据成员和两个方法。     * 数据成员: 1.Version 版本号   2.ScriptFragment 一个正则表达式     * 方法: 1.emptyFunction 一个空方法    2.K 一个方法,传入一个参数,并且直接返回。     */  

var Prototype = {
        Version: '1.4.0',
        ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
        emptyFunction: function() {},
        K: function(x) {return x}
    }

                    (2) /**      * 定义一个对象类,有一个方法create,返回一个构造函数。当实例化对象是调用initialize方法。      * 用 var x = Class.create()来创建一个类型      * 在用的时候,可以new x()      */  

var Class = {
     create: function() {
        return function() {
             this.initialize.apply(this, arguments);
        }
     }
}

                        (3) /**      * 建立一个抽象对象,从名子上看为抽象的,其它对象可以继承它。      */  

var Abstract = new Object();

        (4) /**      * 为Object建立一个静态成员,如果它是一个Function,那么它是一个方法,否则它是一个属性。      * 如果语法是Object.prototype.extend = function(){},这个是增加一个实例方法。      * 如果destination和source都是类,    * 那么它的功能是把类source的所有静态成员都复制给类 destination,如果destination    * 和source都是对象,那么是把所有实例成员都复制过来。      */  

Object.extend = function(destination, source) {
        for (property in source) {
            destination[property] = source[property];
        }
        return destination;
    }

                      (5)/**     * 为Object建立一个静态成员,如果它是一个Function。     * 检查object对象是否为空,如果是undefined或者是null,返回相应信息,     * 如果object存在inspect方法将返回object中定义的数值表现形式。     */    

Object.inspect = function(object) {
        try {
            if (object == undefined) return 'undefined';
            if (object == null) return 'null';
            return object.inspect ? object.inspect() : object.toString();
        } catch (e) {
        if (e instanceof RangeError) return '...';
            throw e;
        }
    }

                              (6)/**     * 下面两个是给Function类增加两个方法:bind 和 bindAsEventListner     */  

Function.prototype.bind = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}
Function.prototype.bindAsEventListener = function(object) {
  var __method = this;
  return function(event) {
    return __method.call(object, event || window.event);
  }
}

                                    (7) /**      * 将整数形式RGB颜色值转换为HEX形式。      */  

Object.extend(Number.prototype, {
  toColorPart: function() {
    var digits = this.toString(16);
    if (this < 16) return '0' + digits;
    return digits;
  },
  succ: function() {
    return this + 1;
  },
  times: function(iterator) {
    $R(0, this, true).each(iterator);
    return this;
  }
});

                                            (8) /**      * 返回第一个成功执行的方法的返回值。      */

var Try = {
  these: function() {
    var returnValue;

    for (var i = 0; i < arguments.length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    return returnValue;
  }
}

                                          附录:  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载