首页 > javascript是面向对象的,怎么体现javascript的继承关系?

javascript是面向对象的,怎么体现javascript的继承关系?

javascript是面向对象的,怎么体现javascript的继承关系?


class A{
    constructor(){
          this.a="aaa";
    }
}

class B extends A{
     constructor(){
          this.b="bbb";
     }
}

var myB = new B();
console.log(myB.a);

ES6


如果觉得javascript的原型链继承方式有点奇怪一时不能接受,那建议使用typescript,或者直接写ES6。


一个简单的例子:

var A =function(){

      }
      A.prototype = {
         v : 5,
         tmp : 76,
         echo : function(){console.log(this.tmp);},
      }  //v、tmp、echo 都是属于A的原型,
      var b = new A();
      b.echo();  //但是此处会发现b也可以调用A的所有原型,而b并没有声明任何echo()方法
      

专业的看楼下~


通过的原型继承就是对象的_proto_属性


你可以看看这篇文章。深入理解JavaScript系列5:强大的原型和原型链


b是A的一个实例,而echo是A类的一个方法,你说说b为何不能访问


new 一个对象


题主这个例子,是没有体现继承关系的,传统的继承关系,至少的两个对象才能体现。

function A(){}
function B(){
this.v=5;
this.temp = 76;
this.echo = function(){
    console.log(this.temp);
}
}

A.prototype = new B();
A.prototype.constructor = A;

var b = new A();

b instanceof A; //true
b instanceof B;//true
}

用A创建了一个对象b,然后调用instanceof,发现b既是A的实例对象,也是B的实例对象,这可不就A继承了B吗。


原型继承,去看一下《高级程序设计》的JavaScript面向对象编程这章。

【热门文章】
【热门文章】