Js构造函数

构造函数

创建对象的几种方式:
//字面量
var obj = {};
//构造函数
var obj = new Object();
//创建一个数组
var arr = new Array();

1.什么是构造函数?

在JavaScript中,用new关键字来调用的函数,称为构造函数。构造函数首字母一般大写

2.为什么要使用构造函数?

​ 举个例子:我们要录入每一位同学的个人信息,那么我们可以创建一些对象,比如:

var p1 = {name:'小明',age:18,sex:'男'};
var p2 = {name:'小刚',age:20,sex:'男'};
var p3 = {name:'小兰',age:16,sex:'女'};
var p4 = {name:'小红',age:19,sex:'女'};
//...

​ 像这样,代码过于重复,无意义。

​ 此时,我们可以创建一下的函数:

格式
function 构造函数名(){
    this.属性 =;
    this.方法 = function(){}
}
new 构造函数名();
function Person(name,age,sex){
    //this就是创建出来的对象 
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sing = function(sang){
        console.log(sang);
    }
}
var p1 = new Person("小明",18,'男');
console.log(p1.name);
console.log(p1.sex);
p1.sing('冰雨');
...
构造函数的执行过程

1.当以new关键字调用时,会创建一个新的内存空间,标记为Person的实例

var p1 = new Person("小明",18,'男');//创建一个新的内存 p1

2.函数体内部的this指向该内存

3.执行函数体内部的代码

4.默认返回this

由于函数体内部的this指向新创建的内存空间,默认返回this,就相当于默认返回了该内存空间

3.工厂函数

function 函数名(参数1,参数2...){
    var obj = new Object(); //创建一个空白的对象
    //为对象添加属性和方法
    obj.a = 参数1;
    return obj; //将新创建好的对象返回出去
}

4.自定义构造函数

function 函数名(参数1,参数2...){
    //为对象添加属性和方法
    this.属性名 = 属性值;
    //构造函数会自动创建对象,并返回,不需要咱们手动创建和返回。
}
//调用
new 函数名();
//创建 人 的构造函数
function Person(name,age){
    this.name = name;
    this.age = age
}
var p = new Person(); //创建一个人的实例对象,返回给p;

5.构造函数的返回值

​ 构造函数执行过程的最后一步是默认返回this

(1) 没有手动添加返回值,默认返回this

function Person(){
    this.name = "张三";
}

var p = new Person();

​ 由于函数体内部的this指向内存空间,而该内存空间又被变量p1所接收,所以p1中就会有一个name属性,属性值为 ‘张三’

p:{name:'张三'}

(2) 手动添加一个基本数据类型的返回值,最终还是返回this

function Person(){
    this.age = 18;
    return 28;
}

var p = new Person();
console.log(p.age);//18

(3) 手动添加一个复杂数据类型(对象)的返回值,最终返回该对象

function Person(){
    this.height = '181';
    return[1,2,3];
}
var p = new Person();
console.log(p.height);//undefined
console.log(p.lenfth);//3
console.log(p[0]);//1

6.与普通函数的区别

​ 一个函数是不是构造函数,我们在定义时是无法区分的。只有在调用时才可以区分

调用方式:
普通函数用:  函数名   调用

构造函数用: new + 函数名 调用
返回值:
普通函数的返回值就是函数体中return后面的内容

构造函数的返回值默认为新创建对象的地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值