zoukankan      html  css  js  c++  java
  • call 和apply 的一个记录

    <!doctype html>
    <html>
     <head>
      <title> call - apply for inherit </title>
     </head>
    
     <body>
      <script type="text/javascript">
       function baseA()  // base Class A
       {
        this.member = "baseA member";
        this.showSelfA = function()
        {
         window.alert(this.member);
        }
       }
    
       function baseB()  // base Class B
       {
        this.member = "baseB member";
        this.showSelfB = function()
        {
         window.alert(this.member);
        }
       }
    
       function extendAB()  // Inherit Class from A and B
       {
        baseA.call(this); // call for A
        baseB.call(this); // call for B
       }
    
       window.onload = function()
       {
        var extend = new extendAB(); 
        extend.showSelfA();  // show A
        extend.showSelfB();  // show B
       }
      </script>
     </body>
    </html>

    运行结果如下:

    baseB member
    baseB member

    测试环境:Google Chrome 

    结果分析:

    预期的结果,应该是输出 baseA member 和 baseB member,但实际输出却是 baseB member 和 baseB member

    以这种方式去实现所谓的多继承,结果:相同的变量会被覆盖;

    当然,我们也可以对上面baseA代码稍作修改,来验证我们调试分析的正确性:

    function baseA()  // base Class A
    {
     this.memberA = "baseA member";   // member改成memberA,以区分baseB中的member
     this.showSelfA = function()
     {
      window.alert(this.memberA);    // 显示memberA
     }
    }
  • 相关阅读:
    关于locals()、globals()以及作用域的一些感悟
    Python中创建对象的方法
    Python之__loader__
    tag上、push上和pull 取Docker 映像
    制作Docker镜像
    在Docker Hub上查找可用的Image映像
    window下安装mysql
    linux下安装python3
    yun、apt、wget的区别
    红帽7 Squid部署代理服务
  • 原文地址:https://www.cnblogs.com/mc67/p/5004755.html
Copyright © 2011-2022 走看看