JavaScript构造函数原理及实现流程解析


Posted in Javascript onNovember 19, 2020

在学习构造函数之前我们需要知道我们学习构造函数需要学习什么:

1.什么是构造函数

2.构造函数用来做什么

3.构造函数的执行过程

4.构造函数的返回值

1.所以首先我们需要知道什么是构造函数:

在我看来,构造函数具有两个特点可以判断是否为构造函数:

1.当函数名为首字母大写时,这个是一个可以大概判断构造函数与普通函数的一个特点,但是不是绝对正确,因为普通函数也可以是大写字母开头

2.当我们需要调用构造函数时我们需要new <构造函数>,也就是产生一个实例化对象。

function Student(name,age,sex,height){
      this.name=name;
      this.age=age;
      this.sex=sex;
      this.height=height;
    }
    //调用构造函数,也就是实例化一个对象。
    var p=new Student('luke',23,'nan',180)
    console.log(p);

控制台输出:

JavaScript构造函数原理及实现流程解析

可以看出输出的是一个对象

2.构造函数是用来做什么的:

1.当我们平时创建对象时可能会用如下创建对象的方式来创建,上代码:

//用创建对象方式来创建
     var stu1={name:'zs',age:20,sex:"male",height:186};
     var stu2={name:'ls',age:21,sex:"male",height:180}
     var stu3={name:'ww',age:22,sex:"female",height:156}
     var stu4={name:'jx',age:23,sex:"female",height:165}
     var stu5={name:'xf',age:24,sex:"male",height:180}

2.当我们用构造函数来创建这个对象时:

//用构造函数来创建对象
    function Student(name,age,sex,height){
      this.name=name;
      this.age=age;
      this.sex=sex;
      this.height=height;
    }
     var stu1=new Student('zs',20,"male",186);
     var stu2=new Student('ls',21,"male",180);
     var stu3=new Student('ww',22,"female",156);
     var stu4=new Student('jx',23,"female",165);
     var stu5=new Student('xf',24,"male",180);

这样看起来是不是要简洁的多呢,这里因为只有五个人,要是五六十个就会看出明显效果

3.构造函数的执行过程

在前面我们知道了构造函数是什么,和其作用,也通过代码来看出了构造函数的作用。那我现在我们需要知道构造函数的执行过程,因为学习一个东西我们需要学习其原理,而不是其表面

所以接下来我就来讲一讲构造函数的执行过程:

在之前我们都知道,要调用构造函数我们需要在其前面加一个new关键字,所以主要就是new在其作用,在执行new关键字后,很明显,他跟以往的函数调用就不同了,他会依次执行以下步骤:

1.new过后会产生一个空对象,作为一个返回的对象实例

2.将空对象的原型指向了构造函数的prototype属性

3.将空对象的值赋值给构造函数里面的this值

4.开始执行构造函数里的代码

4.构造函数的返回值

知道了其执行过程,显而易见,new关键字创建的实例对象为构造函数的返回值。

其实这是不对的,哈哈。

返回值需要分情况来定:

1.当函数中没有return来返回值的时候,会返回this,也就是实例化对象。就像在说2.构造函数有什么作用时说的一样

2.当函数中return中返回一个复杂类型数据的时候,构造函数会返回这个复杂类型数据,上代码:

function Student(name,age,sex,height){
      this.name=name;
      this.age=age;
      this.sex=sex;
      this.height=height;
      return {name:'fanhui',weight:60}
    }
     var Stu1=new Student('zs',20,"male",186);
     console.log(Stu1);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery将一个表单序列化为一个对象的方法
Jan 03 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
jQuery实现标签页效果实战(4)
Feb 08 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
小程序采集录音并上传到后台
Nov 22 Javascript
javascript用defineProperty实现简单的双向绑定方法
Apr 03 Javascript
js实现筛选功能
Nov 24 Javascript
javascript this指向相关问题及改变方法
Nov 19 #Javascript
JavaScript实现alert弹框效果
Nov 19 #Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 #Vue.js
如何使用 vue-cli 创建模板项目
Nov 19 #Vue.js
原生js实现自定义消息提示框
Nov 19 #Javascript
原生js实现点击按钮复制内容到剪切板
Nov 19 #Javascript
jQuery-App输入框实现实时搜索
Nov 19 #jQuery
You might like
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php四种基础算法代码实例
2013/10/29 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
python使用htmllib分析网页内容的方法
2015/05/08 Python
python实现二叉树的遍历
2017/12/11 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
Python之循环结构
2019/01/15 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python @property使用方法解析
2019/09/17 Python
Python 如何批量更新已安装的库
2020/05/26 Python
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
python re模块和正则表达式
2021/03/24 Python
护士实习自我鉴定
2013/10/22 职场文书
保安自我鉴定范文
2013/12/08 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
入股协议书范本
2014/04/14 职场文书
个人工作主要事迹
2014/05/08 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
如何撰写创业策划书
2019/06/27 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript