JavaScript 进阶营

Javascript中的Constructor(构造器)模式

2018-05-04  本文已影响4人  悟C

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

在经典的面向对象编程语言中,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对象之间共享。

上一篇 下一篇

猜你喜欢

热点阅读