周大胖子 发表于 2018-12-24 22:32:42

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

类与类的通信,一共分为两种:
1. 无中介者模式;采用 发布、订阅的方式 【注:也叫观察者模式】
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>类与类之间的通信发布订阅模式</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<link href="style/reset.css" rel="stylesheet">
<link href="style/common.css" rel="stylesheet">
<style>

    h4{
      text-align: center;
    }
</style>
</head>
<body>
    <h4>测试</h4>


    <script>
   function Teacher(){
      this.students =[];
    }

    Teacher.prototype.liouzuoye = function(txt){
      for(var i =0; i<this.students.length; i++){
            //在这调用 student 自己的方法 接收 老师留下的作业
            this.students.listen(txt);
      }
    }

    function Student(name,myteacher){
      this.name = name;
      this.teacher = myteacher;
      this.teacher.students.push(this);
    }

    Student.prototype.listen = function(txt){
      alert('我是'+this.name+',收到了老师留下的作业'+txt)
      console.log(1)
    }

    var laoshi = new Teacher();         //这是发布者
      

    var xiaoming = new Student('小明',laoshi); //这是订阅者
    var dali = new Student('大力',laoshi); //这是订阅者
    var sansui = new Student('sansui',laoshi); //这是订阅者

       laoshi.liouzuoye('写我爱你三十遍');

    </script>
</body>
</html>

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

页: [1]
查看完整版本: JS 面向对象之间 类与类的通信