美文网首页JavaScript 进阶营
Javascript中的Constructor(构造器)模式

Javascript中的Constructor(构造器)模式

作者: 悟C | 来源:发表于2018-05-04 00:23 被阅读4次

    每个开发人员都努力编写可读,可维护和可复用的代码。当应用变的越来越大,代码的结构也变的越来越重要。设计模式的出现就是为了解决软件设计中遇到的常见问题。

    在经典的面向对象编程语言中,Constructor是一种在内存已分配给该对象的情况下,用于初始化新创建对象的特殊方法。在构造器模式中有基本Constructor(构造器)、带原型的Constructor。

    基本Constructor(构造器)

    function Hero(username, attack) {
      this.username = username;
      this.attack = attack;
      this.Q = function() {
        return this.username + 'Q技能: ' + this.attack + ' 伤害';
      }
    }
    
    var deMa = new Hero('德玛', 80);
    
    console.log(deMa.Q()); 
     // 德玛Q技能: 80 伤害
    

    以上是一个简单的基本构造器模式的例子,构造器中,关键字this引用了新创建的对象,当我们想召唤一个新英雄的时候,我们可以通过关键字new一个英雄。不过这个过程中我们发现每个英雄都有Q技能(函数),在我们new一个英雄的时候每次都要重新定义,这是不理想的方式,因为这个Q技能(函数)应该在所有的Hero类型实例之间共享,于是就有了带原型的构造器。

    带原型的Constructor(构造器)

    function Hero(username, attack) {
      this.username = username;
      this.attack = attack;
    }
    
    Hero.prototype.Q = function() {
      return this.username + 'Q技能: ' + this.attack + ' 伤害';
    }
    
    var deMa = new Hero('德玛', 80);
    var anNi = new Hero('安妮', 100);
    console.log(deMa.Q(),' ',anNi.Q());
    // 德玛Q技能: 80 伤害   安妮Q技能: 100 伤害
    

    以上就是通过了扩展原型来实现Q方法在所有Hero对象之间共享。

    相关文章

      网友评论

        本文标题:Javascript中的Constructor(构造器)模式

        本文链接:https://www.haomeiwen.com/subject/xqfqrftx.html