js中创建多个对象的两种方法

本文探讨了JavaScript中两种创建对象的方法:工厂模式和自定义构造函数。工厂模式通过函数创建对象,但存在对象识别和资源浪费问题。构造函数则提供更好的对象识别,并与new运算符配合使用,为对象实例化时初始化属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.工厂模式创建对象

   function createPerson(name, age, hobby) {
      var obj = new Object();
      obj.name = name;
      obj.age = age;
      obj.hobby = hobby
      obj.say= function () {
        console.log(this.name + "喜欢" + hobby);
      };
      return obj;
    }
    // 测试
    var p1=createPerson('张三',22,'踢足球');
    var p2=createPerson('李四',18,'打游戏');
    p1.say();//张三喜欢踢足球
    p2.say();//李四喜欢打游戏
    console.log(p1 instanceof Object);//true
    console.log(p1 instanceof createPerson);//false

工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题,用instanceof只能辨别实例是一个对象,而无法辨别这个实例是谁的对象。而且每生成一个实例就会增加一些重复的内容,会造成资源浪费。

2.自定义构造函数创建对象

  function Person(name,age,hobby){
    this.name=name;
    this.age=age;
    this.hobby=hobby;
    this.say=function(){
      console.log(this.name + "喜欢" + hobby);
    }
  }
  var p1=new Person('张三',22,'踢足球');
  var p2=new Person('李四',18,'打游戏');
  p1.say();//张三喜欢踢足球
  p2.say();//李四喜欢打游戏
  console.log(p1 instanceof Object);//true  即p1是Object的实例
  console.log(p1 instanceof Person);//true  即p2是Person的实例

构造函数 ,是一种特殊的函数。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。使用构造函数时要注意以下几点:

1.构造函数首字母要大写(推荐做法)。
2.构造函数要和new一起使用才有意义。
3.构造函数的作用是用于实例化一个对象,即给对象添加属性和方法。
使用new操作符给 Person创建一个新实例会经历以下四个步骤:
(1)创建一个新对象
(2)将构造函数的作用域赋给新对象(因此this就指向了这个新对象)
(3)执行构造函数中的代码(为这个新对象添加属性)
(4)返回新对象
使用构造函数的主要问题,就是每个方法都要在每个实例上重新创建一遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值