老莫的笔记本  
  
查看: 1118|回复: 0

JS 面向对象之间 类与类的通信

[复制链接]

664

主题

880

帖子

5155

积分

超级版主

Rank: 8Rank: 8

积分
5155
发表于 2018-12-24 22:32:42 | 显示全部楼层 |阅读模式
类与类的通信,一共分为两种:
1. 无中介者模式;采用 发布、订阅的方式 【注:也叫观察者模式】
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <title>类与类之间的通信  发布订阅模式</title>
  7. <meta name="description" content="">
  8. <meta name="keywords" content="">
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  10. <link href="style/reset.css" rel="stylesheet">
  11. <link href="style/common.css" rel="stylesheet">
  12. <style>
  13.     h4{
  14.         text-align: center;
  15.     }
  16. </style>
  17. </head>
  18. <body>
  19.     <h4>测试</h4>
  20.     <script>
  21.    function Teacher(){
  22.         this.students =[];
  23.     }
  24.     Teacher.prototype.liouzuoye = function(txt){
  25.         for(var i =0; i<this.students.length; i++){
  26.             //在这调用 student 自己的方法 接收 老师留下的作业
  27.             this.students[i].listen(txt);
  28.         }
  29.     }
  30.     function Student(name,myteacher){
  31.         this.name = name;
  32.         this.teacher = myteacher;
  33.         this.teacher.students.push(this);
  34.     }
  35.     Student.prototype.listen = function(txt){
  36.         alert('我是'+this.name+',收到了老师留下的作业'+txt)
  37.         console.log(1)
  38.     }
  39.     var laoshi = new Teacher();         //这是发布者
  40.         
  41.     var xiaoming = new Student('小明',laoshi); //这是订阅者
  42.     var dali = new Student('大力',laoshi); //这是订阅者
  43.     var sansui = new Student('sansui',laoshi); //这是订阅者
  44.        laoshi.liouzuoye('写我爱你三十遍');
  45.     </script>
  46. </body>
  47. </html>
复制代码

2. 类与类之间是中介者模式,可以通过中介者找到对方,类似于canvas 像素鸟里的 碰撞检测

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表