今天看到一篇文章,讲到了JS中的继承,提及了一个新的概念,圣杯模式。于是查阅了一下资料,看到对于圣杯模式的描述如下:
var inherit = ((Origin, Target)=>{
let F= function(){};
return (origin, target)=>{
F.prototype = Origin.prototype;
Target.prototype = new F();
Target.prototype.constructor = Target;
Target.prototype.ancestor = Origin.prototype;
}
})();
其对应解决的现实问题时,子类需要继承父类的属性和方法,并且需要根据自身的需求对父类中的方法进行相应的修改,但是修改后不能影响先前父类实例化之后实例方法。
其实个人感觉上面的方法是多余的,既然想继承父类的方法和属性,又想自定义某些方法,同时不影响父类原型对象上的方法,根据JS的特性,使用原型委托是最好不过的。举个列子。
function Person(){}
Person.prototype.hello = ()=>{console.log('hello')};
Person.prototype.spell = ()=>{console.log('spell')};
person1 = new Person();
function ChinaPerson(){}
现在想定义一个ChinaPerson
类,继承自Person
,但是ChinaPerson
需要改写