46 使用构造函数创建对象

1、JavaScript内置的构造函数

JavaScript提供了Object、String、Number等构造函数,通过“new 构造函数()”即可创建对象。使用new关键字创建对象的过程称为实例化,实例化后得到的对象称为构造函数的实例。

// 通过构造函数创建对象
var obj = new Object();	     // 创建Object对象
var str = new String('123');     // 创建String对象
// 查看对象是由哪个构造函数创建的
console.log(obj.constructor); // 输出结果:function Object() { [native code] }
console.log(str.constructor);  // 输出结果:function String() { [native code] }
console.log({}.constructor);    // 输出结果:function Object() { [native code] }

“对象.constructor”属性指向了该对象的构造函数。
通过console.log()输出时,[native code]表示该函数的代码是内置的。
在这里插入图片描述

2、自定义构造函数

在这里插入图片描述
构造函数等同于此时只是做了初始化。
还需要⽤new 来实例化构造函数。
new做了两件事:

  • 创建空⽩对象 var this=new Object()
  • 返回经过加⼯过的对象 return this
    在这里插入图片描述
    上述代码会报错,obj is not defined
    构造函数的命名推荐采用帕斯卡命名规则,即所有的单词首字母大写。
    在构造函数内部,使用this来表示刚刚创建的对象。

obj修改成this,修改如下:
在这里插入图片描述
下面定义一个构造函数Person

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sayHello = function () {
    console.log('Hello, my name is ' + this.name);
  };
}

创建p1,p2两个对象。

var p1 = new Person('Jack', 18);
var p2 = new Person('Alice', 19);
console.log(p1);		
console.log(p2);		
p1.sayHello();
console.log(p1.constructor);

3、构造函数中的return关键字

构造函数的本质是函数,因此构造函数中也可以使用return关键字。
构造函数在使用时与普通函数有一定的区别:
若用return返回一个数组或对象等引用类型数据,则构造函数直接返回该数据,而不会返回原来创建的对象。
若返回的是基本类型数据,则返回的数据无效,依然会返回原来创建的对象。
在这里插入图片描述
通过函数外部的变量obj保存了构造函数中新创建的对象引用,然后通过对比obj和构造函数实际返回的对象是否相同,来比较return在构造函数中使用时的两种返回值情况。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值