对象进阶。

 

用工厂方法创建对象

我们之前已经学习了如何创建一个对象,那我们要是想要创建多个对象又该怎么办?有的人可能觉得直接在写几个对象不就好了吗?比如下边的代码:

 

var person1 = {

    name: "孙悟空",

    age: 18,

    sayName: function () {

        console.log(this.name);

    }

};

 

var person2 = {

    name: "猪八戒",

    age: 19,

    sayName: function () {

        console.log(this.name);

    }

};

 

var person3 = {

    name: "沙和尚",

    age: 20,

    sayName: function () {

        console.log(this.name);

    }

};

console.log(person1);

console.log(person2);

console.log(person3);

 

的确,上述代码确实可以创建多个对象,但是,这样的解决方案真的好吗?对于少量对象可能使用,我们假设说,要用循环创建1000个对象,那你这种办法似乎就没用了,我们可以这么做,如下代码:

 

// 使用工厂模式创建对象

function createPerson() {

    // 创建新的对象

    var obj = new Object();

    // 设置对象属性

    obj.name = "孙悟空";

    obj.age = 18;

    // 设置对象方法

    obj.sayName = function () {

        console.log(this.name);

    };

    //返回新的对象

    return obj;

}

 

var person1 = createPerson();

var person2 = createPerson();

var person3 = createPerson();

 

console.log(person1);

console.log(person2);

console.log(person3);

 

上述代码看起来更加简洁,但是你会发现每一个人都是孙悟空,我们要是想要给每一个人不同的属性值,请参考:

 

// 使用工厂模式创建对象

function createPerson(name, age) {

    // 创建新的对象

    var obj = new Object();

    // 设置对象属性

    obj.name = name;

    obj.age = age;

    // 设置对象方法

    obj.sayName = function () {

        console.log(this.name);

    };

    //返回新的对象

    return obj;

}

 

var person1 = createPerson("孙悟空", 18);

var person2 = createPerson("猪八戒", 19);

var person3 = createPerson("沙和尚", 20);

 

console.log(person1);

console.log(person2);

console.log(person3);

 

现在再看上述代码,发现好像已经完美的解决了创建多个对象的难题,那我们是不是可以用循环批量创建1000个对象了呢?那我们就来试试:

 

// 使用工厂模式创建对象

function createPerson(name, age) {

    // 创建新的对象

    var obj = new Object();

    // 设置对象属性

    obj.name = name;

    obj.age = age;

    // 设置对象方法

    obj.sayName = function () {

        console.log(this.name);

    };

    //返回新的对象

    return obj;

}

 

for (var i = 1; i <= 1000; i++) {

    var person = createPerson("person" + i, 18);

    console.log(person);

 

这样我们就实现了批量创建对象的功能,至于对象的名称和年龄,我们可以通过名称数组和年龄数组来获取。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值