理解构造函数

作者: Mortimey_yt | 来源:发表于2021-08-10 14:03 被阅读0次

举个通俗的例子理解一下: 有人想要造一千个金币,并且要每个金币上面刻有不同的编号,最简单的方法就是,造一个金币的模子,然后再各自刻各自的编号, 构造函数就是这个金币的模子,你每次new一下,就是造一个金币.

构造函数和普通函数的区别:

1.名字:构造函数首字母建议大写;普通函数首字母建议小写
2.内容:构造函数内部可以使用this关键字;普通函数内部不建议使用this,因为这时候this指向的是window全局对象,这样无意间就会为window添加了一些全局变量或函数(关于导致this的原因会在下面介绍)

  1. 在构造函数内部,this指向的是构造出来的新对象
  2. 在普通函数内部,this指向的是window全局对象

构造函数默认不用return返回值;普通函数一般都有return返回值

  1. 构造函数会默认返回this,也就是新的实例对象
  2. 普通函数如果没有return值的话,返回undefined
  3. 如果使用了return,那返回值会根据return值的类型而有所不同

这里涉及到要了解的知识点有基本数据类型和引用类型的区别

  1. return的是五种简单数据类型:String,Number,Boolean,Null,Undefined的话,构造函数会忽略return的值,依然返回this对象;而普通函数会返回return后面的值
function Person(){
    var a;
    this.name = "zqq";
    this.age = 28;
    return a;
}
var p = new Person();//返回this对象
var p = Person();//因为a没初始化,所以a是undefined,而undefined属于简单数据类型,所以返回undefined,String,Number,Boolean,Null同理
  1. 如果return的是引用类型:Array,Date,Object,Function,RegExp,Error的话,构造函数和普通函数都会返回return后面的值
function Person(){
    var arr = [];
    this.name = "zqq";
    this.age = 28;
    return arr;
}
var p = new Person();//返回arr空数组,Date,Object,Function,RegExp,Error同理
var p1 = Person();//返回arr空数组,Date,Object,Function,RegExp,Error同理

3.调用:构造函数使用new关键字调用;普通函数不用new关键字调用。

var p = new Person();
var p = Person();
当以new调用构造函数(执行var p = new Person())时,函数内部会发生以下情况:

1.创建一个空对象
 var p = {}; 
 2.this变量指向对象p
 Person.call(p)  //解释了上述this指向的问题
 3.p继承了构造函数Person()的原型
 p.__proto__ = Person.prototype 
 4.执行构造函数Person()内的代码
 5.return 对象p

相关文章

  • scala学习笔记-构造函数

    scala的构造函数分为主构造函数和辅助构造函数 【辅助构造函数】比较容易理解,它们同C++和Java的构造函数十...

  • JS继承方法详解以及优缺点

    前置阅读:理解原型、new、构造函数 构造函数直接实现 问题:通过构造方法继承的子类,可以获取到父类构造函数当中的...

  • 第六章 创建对象

    构造函数 constructor和instanceof区别 构造函数和普通函数区别 原型模式理解原型对象isPro...

  • 原型与原型链的理解

    深入理解原型 构造函数 创建一个函数,当我们new这个函数,哪个这个过程就叫做构造函数通过构造函数创建对象也称为实...

  • 构造函数-js-高级程序设计-第六章笔记

    前言 理解对象 创建对象构造函数模式原型模式组合使用构造函数模式和原型模式动态原型模式寄生构造函数模式稳妥构造函数...

  • 构造函数理解

    首先来了解一段代码 什么是构造函数? 构造函数的特点: a:构造函数的首字母必须大写,用来区分于普通函数 b:内部...

  • 理解构造函数

    举个通俗的例子理解一下: 有人想要造一千个金币,并且要每个金币上面刻有不同的编号,最简单的方法就是,造一个金币的模...

  • JavaScript---原型

    学习目标 使用 prototype 原型对象解决构造函数的问题 理解什么是原型(原型对象) 构造函数、protot...

  • 浅析构造函数,原型及原型链

    一.构造函数 所谓的构造函数,个人理解其实就是一个普通函数,只不过我们用它来专门生产对象,这样的函数,我们称之它为...

  • Flutter 6种构造函数详解

    Flutter有生成构造函数、默认构造函数、命名构造函数、重定向构造函数、常量构造函数、工厂构造函数 一.生成构造...

网友评论

    本文标题:理解构造函数

    本文链接:https://www.haomeiwen.com/subject/lupxbltx.html