js原型与继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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();

  

posted @   Yxh_blogs  阅读(191)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示