摘要:
除前文学习的三种继承外,还有另外三种继承模式:原型继承(Prototypal Inheritance)、寄生继承(Parasitic Inheritance)和寄生组合继承(Parasitic Combination Inheritance)。它们都以下面这个函数为前提的1 function object(o)2 {3 function F(){}4 F.prototype = o;5 return new F();6 }先是定义F(),它相当于是个模板类,接着它的原型对象被指向了传入的参数o,F具有了o的属性和方法(作为原型属性和方法),最后返回一个模板类实例。可... 阅读全文
posted @ 2011-09-17 13:32
腐乳
阅读(255)
评论(0)
推荐(0)
摘要:
有时也会被叫做伪经典继承(pseudoclassical inheritance),它是结合了原型链和对象伪装各自优点的方式。它的基本思路是使用原型链继承原型上的属性和方法,使用对象伪装继承实例属性。通过定义原型方法,允许函数复用,并允许每个实例拥有它们自己的属性。参考以下代码: 1 function BaseClass(name) 2 { 3 this.name = name; 4 this.colors = ["red","blue"]; 5 } 6 BaseClass.prototype.getName = function(){return th 阅读全文
posted @ 2011-09-17 13:27
腐乳
阅读(342)
评论(0)
推荐(0)
摘要:
有时也叫构造器偷窃(Constructor Stealing,按字面翻译的,有点不好听)或者叫经典继承(Classical Inheritance)。基本思想很简单:在子类的构造器上调用超类构造器。更确切的说是在子类构造器执行上下文来中执行超类构造器(父类构造器中的this指向子类实例),js提供了apply()和call()函数,它们可以实现这种调用。基本代码如下: 1 function BaseClass() 2 { 3 this.colors=["red","blue"]; 4 } 5 function ChildClass() 6 { 7 //i 阅读全文
posted @ 2011-09-17 13:26
腐乳
阅读(301)
评论(0)
推荐(0)
摘要:
原型链是采用的最主要的继承方式,它的思路是这样的:每一个类(构造器,js中的function)都有一个原型属性(prototype)指向原型对象,原型对象有一个构造器属性(constructor),它又指回到function,是个循环引用。类的每个实例,也有个原型属性(代码无法访问的,叫做__proto__),它跟构造器原型发生指向的是同一个对象,即同一个类的所有实例共用一个原型对象。要实现两个类型的继承,就是将一个类型的原型对象指向另一个类型的实例,而不在是原来的默认的原型对象。这样就形成了原型链。 子类可以通过原型链获得超类的所有属性和方法。从而实现了继承。基本的js代码如下: 1 ... 阅读全文
posted @ 2011-09-17 13:22
腐乳
阅读(320)
评论(0)
推荐(0)
摘要:
众所周知C#、java等高级语言是OO的,它们都向开发人员提供的丰富的OO特征,利用这些OO特征我们可以付出尽可能少的工作、开发极复杂的应用,并能对其进行方便而灵活的维护、扩展。并由此形成了对应用开发具有指导意义的OO设计模式,影响着全球不计其数的开发人员和不可估量的应用开发。OO是如此重要,以至于在形形色色的应用开发的方方面面都要引起重视。作为WEB时代的开发人员,在你的WEB开发中采用OOP,无疑会让你的工作大放异彩。如今AJAX是如此的大行其道,js在开发中的重要性被提高到了史无前例的高度。那么在实际工作中如何使js开发按照OO的思想进行呢?这是个复杂而系统的工作,首先还是让我们从js中 阅读全文
posted @ 2011-09-17 13:15
腐乳
阅读(177)
评论(0)
推荐(0)
浙公网安备 33010602011771号