摘要: 在《利用JS特性实现的简单HashTable 》文章中,实现了一个极简单的HashTable。利用这个hashtable可以实现一个简单的页面缓存对象cache,代码如下:var cache = function(){ var hash = new Hash();//定义一个hashtable容器 return { contain : function(key){ return hash.contain(key); }, add : function(key,obj){ hash.add(key,obj); }, remove : function(key){ hash.remove(key) 阅读全文
posted @ 2011-07-06 13:28 沈沈 阅读(206) 评论(0) 推荐(1) 编辑
摘要: 令人费解的是js提供了内置的Function、Date、Array等对象,却没有提供HashTable对象,但我们利用对象的特性是可以实现的。 js的对象可以看成为一个的hashtable。在对象生命周期内,开发人员可以动态的为他们添加或删除属性、方法。由于对象自身就具有hashtable的特点,那么我只需要加上方便操作的hashtable接口实现。代码如下:var HashTable=null;(function(){ //static private member var _h = {}; var _l = 0; //static private method //if hash con. 阅读全文
posted @ 2011-07-06 13:28 沈沈 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 除前文学习的三种继承外,还有另外三种继承模式:原型继承(Prototypal Inheritance)、寄生继承(Parasitic Inheritance)和寄生组合继承(Parasitic Combination Inheritance)。它们都以下面这个函数为前提的function object(o){ function F(){} F.prototype = o; return new F();}先是定义F(),它相当于是个模板类,接着它的原型对象被指向了传入的参数o,F具有了o的属性和方法(作为原型属性和方法),最后返回一个模板类实例。可以看出它的本质是基于对象的继承(新对象继承原. 阅读全文
posted @ 2011-07-06 13:28 沈沈 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 它结合了原型链和对象伪装各自优点的方式。它的基本思路是使用原型链继承原型上的属性和方法,使用对象伪装继承实例属性。通过定义原型方法,允许函数复用,并允许每个实例拥有它们自己的属性。参考以下代码:function BaseClass(name){ this.name = name; this.colors = ["red","blue"];}BaseClass.prototype.getName = function(){return this.name;}function ChildClass(name,age){ // inherit BaseClas 阅读全文
posted @ 2011-07-06 13:28 沈沈 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 基本思想很简单:在子类的构造器上调用超类构造器。更确切的说是在子类构造器执行上下文来中执行超类构造器(父类构造器中的this指向子类实例),js提供了apply()和call()函数,它们可以实现这种调用。基本代码如下:function BaseClass(){ this.colors=["red","blue"];}function ChildClass(){ //inherit BaseClass.call(this);}var instance1 = new ChildClass();var instance2 = new ChildClass() 阅读全文
posted @ 2011-07-06 13:27 沈沈 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 原型链是采用的最主要的继承方式,它的思路是这样的:每一个类(构造器,js中的function)都有一个原型属性(prototype)指向原型对象,原型对象有一个构造器属性(constructor),它又指回到function,是个循环引用。类的每个实例,也有个原型属性(代码无法访问的,叫做__proto__),它跟构造器原型指向的是同一个对象,即同一个类的所有实例共用一个原型对象。要实现两个类型的继承,就是将一个类型的原型指向另一个类型的实例,而不在指向原来的默认的原型对象。这样就形成了原型链。 子类可以通过原型链获得超类的所有属性和方法。从而实现了继承。基本的js代码如下://supper. 阅读全文
posted @ 2011-07-06 13:27 沈沈 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 众所周知C#、java等高级语言是OO的,它们都向开发人员提供的丰富的OO特征,利用这些OO特征我们可以付出尽可能少的工作、开发极复杂的应用,并能对其进行方便而灵活的维护、扩展。并在此基础上形成了具有指导意义的OO设计模式,影响着不计其数的开发人员和应用开发。OO是如此重要,以至于在形形色色的应用开发的方方面面都要引起重视。作为WEB时代的开发人员,在你的WEB开发中采用OOP,无疑会让你的工作大放异彩。如今AJAX是如此的大行其道,js在开发中的重要性被提高到了史无前例的高度。那么在实际工作中如何使js开发按照OO的思想进行呢?这是个复杂而系统的工作,首先还是让我们从js中的继承开始吧。 . 阅读全文
posted @ 2011-07-06 13:26 沈沈 阅读(298) 评论(0) 推荐(0) 编辑