JavaScript创建对象的几种方式

一、Object()创建对象、用字面量的方式创建对象1.Object()创建对象new Object()就是利用JavaScript提供的构造函数实例化了一个对象var person = new Object();//为这个实例化的对象添加属性person.name = "zhangsan";person.age =21;person.gender = 'male';person.sayName = function(){ console.log(this.name)}
摘要由CSDN通过智能技术生成

一、Object()创建对象、用字面量的方式创建对象

1.Object()创建对象

new Object()就是利用JavaScript提供的构造函数实例化了一个对象

var person = new Object();
//为这个实例化的对象添加属性
person.name = "zhangsan";
person.age =21;
person.gender = 'male';
person.sayName = function(){
    console.log(this.name)
}

2.用字面量的方式创建对象

var person = {
  name: "zhangsan",
  age: 18,
  gender: 'male',
  sayName: function(){
      console.log(this.name);
  }
}

缺点:以上两种方法在使用同一接口创建多个对象时,会产生大量重复代码,为了解决此问题,工厂模式被开发。

二、工厂模式创建对象

//将创建对象的代码封装在一个函数中
function createPerson(name, age, gender) {
  var person = new Object();
  person.name = name;
  person.age = age;
  person.gender = gender;
  person.sayName = function () {
    console.log(this.name);
  }
  return person;
}
//利用工厂函数来创建对象
var person1 = createPerson("zhangsan", 18, 'male');
var person2 = createPerson("lisi", 20, 'female');

优点:只要我们往工厂函数里面塞参数,工厂函数就会像生产产品一样造出实例来。

缺点:工厂模式解决了重复实例化多个对象的问题,但没有解决对象识别的问题(无从识别对象的类型,因为全部都是Object,本例中,得到的都是person对象,对象的类型都是Object)。

三、自定义构造函数模式

ECMAScript中的构造函数可以用来创建特定类型的对象。像Object和Array这样的原生构造函数,运行时可以直接在执行环境中使用。也可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。

前面的案例使用构造函数可以这样写

// 自定义构造函数
function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;
  this.sayName = function () {
    console.log(this.name);
  }
}

var person1 = new Person('zhangsan', 29, 'male');
var person2 = new Person('lisi', 19, 'female');

person1.sayName(); // zhangsan
person2.sayName(); // lisi

注意:1、按照惯例,构造函数名称的首字母都是要大写的,非构造函数则以小写字母开头。这是从  面向对象编程语言那里借鉴的,有助于在 ECMAScript 中区分构造函数和普通函数。

           2、任何函数,只要通过new操作符来调用,那它就可以作为构造函数;如果不用new操作符来调用,它就是一个普通函数的调用。比如,前面的案例中定义的 Person()可以像下面这样调用:

var Person = function (name, age, gender) {
  this.name = name;
  this.age = age;
  this.gen
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值