这里讲了一个最最最简单的JS中基于原型链的继承和多态。
先看一下以下这段代码的实现(A是“父类”,B是“子类”):
var A = function(){
this.value = 'a';
this.showValue = function(){
console.log(this.value);
}
}
var a = new A();
a.showValue();
var B = function(){
this.value = 'b';
};
B.prototype = new A();
var b = new B();
b.showValue();
输出结果为:
"a"
"b"
- 1
- 2
- 1
- 2
结果看来实现了一个函数,不同对象的执行,出现不同的结果。
B.prototype = new A(); 这句将A“类”的构造方法,赋值给了B的构造原型,使B能够继承于A。
b.showValue()过程中,先在b中寻找showValue,无果。在b的原型:B,中寻找showValue,而B的prototype已经被A的构造方法赋值,因此再向上一层,在A中找到showValue。因此执行。