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面向对象编程这章。