每个开发人员都努力编写可读,可维护和可复用的代码。当应用变的越来越大,代码的结构也变的越来越重要。设计模式的出现就是为了解决软件设计中遇到的常见问题。
在经典的面向对象编程语言中,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对象之间共享。
网友评论