继承,举个例子:类:车
属性:速度、位置
方法:前进,停止(假设这车功能很弱)类:汽车A
属性:方向。
方法:左转,右转。(增加的功能)
假设汽车A是继承自车的。这时候,汽车A实际上已经拥有了车的全部属性和方法,而且还增加了自己的属性和方法。

解决方案 »

  1.   

    这里貌似有详细的讲解http://blog.csdn.net/slalx/archive/2007/10/30/1856321.aspx要了解面向对象。何必一来就看javascript的模拟呢。
    直接用java之类的一下就知道大概了。
      

  2.   

    首先你要了解继承机制。继承就是将父类的public,protected方法继承到子类中。同时,我们可以调用super之类的方法也调用父类的构造函数。
    我们对照上面的例子。
    Person是父类。
    User是子类,他继承自Person。可以通过uber(方法名)来调用父类的某个方法。这个uber方法的好处是在父类和子类的方法名称是一致时,可查找到父类的方法,并调用它(既可同名,又可以再调用父类方法)。这可以称之为寄生继承。然则,对于单继承来说,父类是一颗树。一个类有可能是有一个或多个父类。所以我们必须在调用uber的时候查找继承树,在js里,称作是查找prototype链。直到找到最远的为止。而实际上这段代码是有问题的:
    1.在一个多父类的继承树里时,查找父类的prototype的时候,里面的d是没有定义的。
    2.该代码是要找到最远的父类,那么假设父类没有定义getName方法,将会报错。
    3.在一开始继承的时候就调用了父类的构造函数,增加了效率成本,其次,假设父类的构造函数期待一个参数传入的话,那么该继承也无能为力。个人认为,此例可以用于教学,但不是一个很好的实现继承方法。
    swiss原型方法,这个方法具体的作用不大,只是指定拷贝父类的某一个/多个方法如:
    function jsclassA(){};
    jsclassA.prototype = {
    methodA: function(),
    methodB: function(),
    methodC: function()
    }function jsclassB(){};
    jsclassB.swiss(jsclassA,'methodB','methodC');
    这样jsclassB就拥有了methodB和methodC方法