1、工厂模式
function createPerson(name, age, job){
let o = new Object()
o.name = name
o.age = age
o.job = job
o.sayName = function() {
console.log(this.name)
}
return o
}
let person1 = createPerson('2', 3, 'ceshi')
2、构造函数模式
function Person(name, age, job) {
this.name = name
this.age = age
this.job = job
this.sayName = function() {
console.log(this.name)
}
}
let person1 = new Person('xx', 3, 'ceshi')
3、原型模式
function Person() {}
Person.prototype.name = "xx"
Person.prototype.age = 3
Person.prototype.job = 'ceshi'
Person.prototype.sayHello = function(){
console.log(this.name)
}
let person1 = new Person()
以上是来自高级程序设计四里面的解释,下面是根据上面的创建方法结合形成的方法
1、组合模式
基于构造函数模式和原型模式
function Person(name) {
this.name = name
}
Person.prototype = {
constructor: Person,
sayHello: function() {
console.log(this.name)
}
}
const person1 = new Person()
2、动态原型模式
function Person(name) {
this.name = name;
if (typeof this.getName != "function") {
Person.prototype.getName = function () {
console.log(this.name);
}
}
}
var person1 = new Person();
3、寄生构造函数
本质还是构造函数
function Person(name) {
var o = new Object();
o.name = name;
o.getName = function () {
console.log(this.name);
};
return o;
}
var person1 = new Person('kevin');
4、稳妥构造函数模式
function person(name){
var o = new Object();
o.sayName = function(){
console.log(name);
};
return o;
}
var person1 = person('kevin');
person1.sayName(); // kevin
person1.name = "daisy";
person1.sayName(); // kevin
console.log(person1.name); // daisy