1,工厂模式
<pre name="code" class="javascript">function createPerson(name, age, job) { var o = new Object(); o.name = name; o.age= age; o.job= job; o.sayName = function() { alert(this.name); } retrun o; } var person = createPerson("Donny", 26, "SE");
工厂模式虽然解决了创建多个相似对象的问题,但没有解决对象识别问题。
2,构造函数模式
<pre name="code" class="javascript">function Person(name, age, job) { this.name = name; this.age= age; this.job= job; this.sayName = function() { alert(this.name); } } var person = new Person("Donny", 26, "SE");
缺点:每个方法都重新创造一遍
3,原型模式
var person = new Person();<pre name="code" class="javascript"><pre name="code" class="javascript">function Person() { } Person.prototype.name = "Donny"; Person.prototype.age= 26; Person.prototype.job= "SE"; Person.prototype.sayName = function() { alert(this.name); }
缺点:属性共享4,混合构造函数和原型模式
var person = new Person();<pre name="code" class="javascript">function Person() {
}Person.prototype.sayName = function() { alert(this.name);}<pre name="code" class="javascript" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px;"> this.name = name; this.age= age; this.job= job;
5,动态原型模式
function Person() { this.name = name; this.age= age; this.job= job; if(typeof this.sayName != "function") { Person.prototype.sayName = function() { alert(this.name); } }; }; var person = new Person();
</pre>
6,寄生构造函数模式7,稳妥构造函数模式