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 相关文章推荐
javascript css styleFloat和cssFloat
Mar 15 Javascript
理解Javascript_02_理解undefined和null
Oct 11 Javascript
Javascript alert消息换行的方法
Aug 07 Javascript
Javascript基础教程之JavaScript语法
Jan 18 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
EasyUI布局 高度自适应
Jun 04 Javascript
浅谈javascript中的三种弹窗
Oct 21 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
Angularjs 动态添加指令并绑定事件的方法
Apr 13 Javascript
javascript实现拼图游戏
Jan 29 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
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
three.js实现圆柱体
2018/12/30 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
Python如何输出百分比
2020/07/31 Python
python遍历路径破解表单的示例
2020/11/21 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
服务口号大全
2014/06/11 职场文书
军训口号
2014/06/13 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
2015年财政局工作总结
2015/05/21 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
用python画城市轮播地图
2021/05/28 Python
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL