代码如下://Hash对象的工具函数 function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { //初始化,创建一个新的Hash对象 function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } //覆盖Enumerable里面的方法,遍历Hash对象时会用到 function _each(iterator) { for (var key in this._object) { var value = this._...
代码如下://String对象的静态方法 Object.extend(String, { interpret: function(value) { return value == null ? : String(value); }, specialChar: { \b: \\b, \t: \\t, \n: \\n, \f: \\f, \r: \\r, \\: \\\\ } }); Object.extend(String.prototype, (function() { //内部方法,为gsub和sub函数初始化replacement参数 function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; va...
代码如下:Array.from = $A; (function() { //Array原型的引用 var arrayProto = Array.prototype, slice = arrayProto.slice, //JS 1.6里面会有原生的forEach方法 _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); } //如果不是JS1.6,_each设置成对象的each方法 //这里的_...
This is a simple facility for periodical execution of a function. This essentially encapsulates the native clearInterval/setInterval mechanism found in native Window objects. This is especially useful if you use one to interact with the user at given intervals (e.g. use a prompt or confirm call): this will avoid multiple message boxes all waiting to be actioned. 这个对象就是可以周期性的执行某个方法...
var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } 定义了一个class函数作为创建类的模版或者说是原型 使用方法 代码如下: Test Class.create() var llinzzi= Class.create(); llinzzi.prototype = { initialize:function(){ document.writeln('This is create when initialize'); }, fuv:function(){document.writeln('This is inline method');} } var linChild = ne...
代码如下:var Template = Class.create({ //初始化方法 initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, //格式化方法,如果从java的角度来说,其实叫format更好 :) evaluate: function(object) { //检查是否定义了toTemplateReplacements方法,是的话调用 //整个的Prototype框架中,只有Hash对象定义了这个方法 if (object && Object.i...
$H就是建立Hash对象的便捷方法,关于Hash对象具体参考【Prototype 学习——Hash对象 】 $R就是简历ObjectRange对象的便捷方法,关于ObjectRange对象具体参考【Prototype 学习——ObjectRange对象 】 Try.these: Accepts an arbitrary number of functions and returns the result of the first one that doesn't throw an error. 代码如下://就是用一个循环嵌套try...catch完成这个工具函数的 var Try = { these: function() { va...
代码如下:function $$() { return Selector.findChildElements(document, $A(arguments)); } 这个类可以分成三个部分:第一个部分就是根据不同的浏览器,判断使用什么DOM操作方法。其中操作IE就是用普通的getElementBy* 系列方法;FF是document.evaluate;Opera和Safari是selectorsAPI。第二部分是对外提供的基本函数,像findElements,match等,Element对象里面的很多方法就是直接调用这个对象里面的方法。第三部分就是XPath等一些...
代码如下: function SpecialArray(arr){ this.arr=arr; } SpecialArray.prototype.map=function(func){ for(var i=0,len=this.arr.length;ithis.arr[i]=func(this.arr[i]); //调用函数,改变arr数组的每个项的值 } return this; //返回自身对象 } var obj=new SpecialArray([ a , b , c ]); //可以对obj的arr属性做任何的操作 alert(obj.map(function(el){return el.toUpperCase()}).arr); alert(obj.map(function(el){return el+"...
代码如下: /// /// //引入DataBinder.js include("DataBinder.js"); /* */ function Table(){ this.elmTable=null; //表格标签 this.templetRow=null; //模板行 this.displayBody=null; //显示区tbody标签 this.isOverChange=false; //鼠标移过时,是否改变颜色 this.hoverColor="#EBF3FD"; //鼠标移过颜色 this.isActiveChange=false; //行点击时,是否改变颜色 this.activeColor="#D9E8FB"; //行点击时颜色 this.activ...
先列举一下Ajax在Jquery和prototype中的实现。 Jquery: 代码如下: $(function(){ var box = {}; var remoteUrl = 'index.php'; box.interval = 5*60*1000;//5分钟 box.showBoxInfo = function() { jQuery.get(remoteUrl, function(data){ var msg_box = $('#msg_box'); msg_box.innerHTML = data; } }); } box.run = function(){ this.showBoxInfo(); setInterval(this.showBoxInfo,this.interval); }; box.run(); }) prototy...
在使用portotype,调用ajax方法时出现乱码,此时,获取页面中加入 可以试试;; Page.Response.Charset = "gb2312"; 如果不奏效,有人提供另外解决方案: 代码如下: request: function(url) { this.url = url; this.method = this.options.method; this.encoding = this.options.encoding; var params = this.options.parameters; if(this.encoding.toUpperCase()=="UTF-8"){ encode=encodeURIComponent; }else{ encode=escape; } 在...
好,那就让我们一步步打造,首先让我们来看下继承原本的写法: 代码如下: var Person = function(name, age) { this.name = name; this.age = age; } Person.prototype.SayHello = function () { alert(this.name + "," + this.age); }; var Programmer = function (name, age, salary) { Person.call(this, name, age); this.salary = salary; }; Programmer.prototype = new Person(); var pro = new Programmer("kym", 21, 50...
首先我们继续上文的代码,我们来把这段代码延伸一下: 代码如下: var Person = function (name, age) { this.name = name; this.age = age; this.Introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); }; }; var person1 = new Person("飞林沙", 21); var person2 = new Person("kym", 26); alert(person1.Introduce == person2.Introduce); 结果弹出false。也就是说,这两个对象的方法是不同的...
通常在JavaScript中用for与for in遍历数组结果是没有什么区别的,它的循环变量i都是从0开始的数组索引(for in如果遍历的是非数组对象的属性集合,则这个i就是属性名,或称之为key)。另外要注意一点是:用for in遍历数组,循环变量i是字符串类型的。如果对Array进行原型扩展后,再用for in来对数组进行遍历时就要注意些问题了。 测试代码: 代码如下: Array.prototype.max = function() { return Math.max.apply({}, this); }; v...