JS中的四大继承方案
所谓继承,就是子类继承父类中的属性和方法。 方案一:原型继承 方法:子类的原型指向父类的一个实例。 function A() { this.x = 100; } A.prototype.getX = function getX() { console.log(this.x); }; function B() { this.y = 200; } B.prototype.sum=function(){} B.prototype = new A; //B子类 => A父类,让子类B的原型指向父类A的实例 B.prototype.getY = function getY() { console.log(this.y); }; let b = new B; 通过 B.prototype = new A 这一句话达成继承。 js中的面向对象的机制都是基于原型链完成的,所以js中的继承也可以是基于原型链的,但这其中又有很多弊端。 比如B之前的原型B.prototype上的方法b已经查找不到,b的constructor应该是B,但现在是A,b可以通过b.__proto__或b.__proto__.__proto__肆意修改父类上的属性和方法,而父类上不管私有还是公有的属性和方法都会成为子类公有的,这些种种问题都是需要注意的,这大概就是IE浏览器禁止使用__proto__的原因吧。 方案二