哪些设计模式
<h4>你用过那些设计模式?</h4>
<h5>思考:字面量、工厂模式、构造函数模式、原型对象模式、构造函数和原型组合(最常用的方式)</h5>
<hr />
<ul>
<li>
<p>工厂模式:
1.工厂模式解决了重复实例化的问题,但有一个问题就是不能识别
2.主要好处:就是消除对象之间的耦合,通过使用工厂模式不用new关键字</p>
</li>
<li>
<p>构造函数模式</p>
<ol>
<li>使用构造函数解决了重复实例化的问题,又解决了对象识别的问题</li>
<li>直接将属性和方法赋值给this对象;</li>
<li>缺点:两个实例调用构造函数中的方法不是同一个方法</li>
</ol>
</li>
<li>构造函数与原型(常用)
<blockquote>
<p>js里函数都有1个原型属性叫prototype,当调用构造函数创建对象的时候,所有构造函数原型的属性在新创建对象上都可用。</p>
</blockquote></li>
</ul>
<pre><code class="language-javascript">function Car(model, year, miles) {
this.model = model;
this.year = year;
this.miles = miles;
}
/*
注意:这里我们使用了Object.prototype.方法名,而不是Object.prototype
主要是用来避免重写定义原型prototype对象
*/
Car.prototype.output= function () {
return this.model + "走了" + this.miles + "公里";
};
//上面的方法可以这样写
Car.prototype = {
constructor:Car,
output:function(){
return this.model + "走了" + this.miles + "公里";
}
}
var tom = new Car("大叔", 2009, 20000);
var dudu = new Car("Dudu", 2010, 5000);
console.log(tom.output());
console.log(dudu.output());</code></pre>