js创建对象的三种模式(工厂模式,构造函数模式,原型模式)

// 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的方式创建对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值