js原型与继承
var Beverage = function(){}; Beverage.prototype.boilWater = function(){ console.log("把水煮沸"); }; Beverage.prototype.brew = function(){ throw new Error("子类必须重写该方法"); }; Beverage.prototype.pourInCup = function(){ throw new Error("子类必须重写该方法"); }; Beverage.prototype.addCondiments = function(){ throw new Error("子类必须重写该方法"); }; Beverage.prototype.customerWantsCondiments = function(){ return true; }; Beverage.prototype.init = function(){ this.boilWater(); this.brew(); this.pourInCup(); if(this.customerWantsCondiments){ this.addCondiments(); } }; var Coffee = function(){}; Coffee.prototype = new Beverage();//继承父类Beverage Coffee.prototype.boilWater = function(){ console.log("把水煮沸"); }; Coffee.prototype.brew = function(){ console.log("用沸水冲泡咖啡"); }; Coffee.prototype.pourInCup = function(){ console.log("把咖啡倒进杯子"); }; Coffee.prototype.addCondiments = function(){ console.log("加糖和牛奶"); }; var Tea = function(){}; Tea.prototype = new Beverage();//继承父类Beverage Tea.prototype.boilWater = function(){ console.log("把水煮沸"); }; Tea.prototype.brew = function(){ console.log("用沸水浸泡茶叶"); }; Tea.prototype.pourInCup = function(){ console.log("把茶水倒进杯子"); }; Tea.prototype.addCondiments = function(){ console.log("加入柠檬"); }; Tea.prototype.customerWantsCondiments = function(){ return window.confirm("请问需要加调料吗?"); }; var coffee = new Coffee();//实例化Coffee coffee.init(); var tea = new Tea();//实例化Tea tea.init();