// js 中创建对象有三种模式:工厂模式,构造函数模式,原型模式
// 工厂模式创建对象
function createPerson(name, age) {
var obj = new Objext();
obj.name = name;
obj.age = age;
obj.sayHi = function() {
console.log('hello');
}
return obj;
}
var per = createPerson('张三', '20');
// 构造函数模式创建对象
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHi = function() {
console.log('hello');
}
}
var person = new Person('王五', '21');
// 原型模式创建对象 ----> 指的是将 对象实例共享的属性和方法都添加给 构造函数的 原型对象
function Person {
}
Person.prototype.name = '李四';
Person.prototype.age = 22;
Person.prototype.sayHi = function() {
console.log('h~e~l~l~o~');
}
var pers = new Person();
工厂模式和自定义构造函数的区别
- 共同点:都是函数,都可以创建对象,都可以传入参数
- 区别:
- 工厂模式:
- 函数名字的首字母是小写的
- 函数里面使用了new创建对象(new Object())
- 有返回值(将创建的对象返回)
- new之后的对象是当前对象
- 直接调用函数就可以创建对象(不需要new)
- 自定义构造函数:
- 函数名首字母是大写的
- 函数里面没有使用new
- 没有返回值
- this是当前对象
- 通过new的方式创建对象
- 工厂模式: