用new调用函数的四步走

2023-05-16

JS规定,使用new调用函数会进行四步走:
1、函数体内会自动创建出一个空白对象。
2、函数的上下文(this)会自动指向这个对象。
3、函数体内的语句会执行。
4、函数会自动返回上下文对象,即使函数没有return语句。

下面进行解释四步走:
用一下代码进行举例:

        function sun() {
            this.a = 3;
            this.b = 5;
        }


        var obj = new sun();
        console.log(obj);

在第一步中:函数体内会自动创建出一个空白对象。
因此就相当于在sun函数中自动多了一个对象,即:
在这里插入图片描述
在第二步中函数的上下文(this)会自动指向这个对象。即:
在这里插入图片描述
这步也很好理解,就不多赘述了。
第三步:函数体内的语句会执行。
所以就会往新创建的对象中加 a: 3,b:5,这两个属性值,
在这里插入图片描述
第四步:函数会自动返回上下文对象,即使函数没有return语句
在这里插入图片描述
返回的就是this,this指向的是那个新创建的空对象,所以obj就是{a:3,b:5},所以最终打印出来的结果就是sun {a: 3, b: 5},如果这里不用new ,而只是直接这样var obj = fun()那么打印出来的是undefined,原因很简单在fun函数中没有设置返回值,所以结果就是undefined。

构造函数:
定义:用new调用的函数就是构造函数,任何函数都可以是构造函数,只要用new调用它。
故名思意,构造函数用来构造新对象,它内部的语句将为对象添加若干属性和方法,完成对象的初始化。
构造函数必须用new关键字调用,否则不能正常工作,正因如此,开发者规定构造函数首字母要大写(可以小写,没有硬性规定要大写,只是为了区分普通函数和构造函数)。

举个构造函数的栗子:

        function People(name,age,sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
        var obj = new People('李白',30,'female');
        console.log(obj); // People {name: "李白", age: 30, sex: "female"}

给构造函数添加方法:

        function People(name,age,sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayHello = function() {
                console.log('我是'+this.name+'我'+this.age);
            }
        }
        var obj = new People('李白',30,'female');
        obj.sayHello(); // 我是李白我30
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用new调用函数的四步走 的相关文章

随机推荐

  • 好用的跨平台开源截图工具推荐--flameshot

    flameshot 简介 flameshot 是一款跨平台的截图工具 图标 配置文件路经 linux config flameshot flameshot ini windows C Users YOURNAME AppData Roami
  • C语言 该日是该年的第几天(考虑闰年)

    给出日期 xff08 年月日 xff09 xff0c 计算该日是该年的第几天 xff08 需考虑是否是闰年 xff09 文章目录 前言一 逻辑演示部分 xff08 判断闰年 xff09 二 代码部分 1 代码示例2 输出演示总结 一 判断是
  • manila,barbican,cloudkitty服务的基本使用

    目录 Manila服务安装与使用Barbican服务安装与使用Cloudkitty服务安装与使用 Manila服务安装与使用 安装服务后创建default share type共享类型 不使用驱动程序支持 接着创建一个大小为2G的共享存储名
  • OpenCV计算机视觉(四) —— 图像的阈值处理与自适应阈值Otsu

    阈值处理是指剔除图像内像素高于阈值或者低于阈值的像素点 图像的阈值处理主要是设置一个阈值 xff1a 大于这个数赋予一个值 xff0c 小于一个数赋予另一个值 xff0c 将图片的像素值变成两个灰度值数中间的一个 xff0c 实现图像的分割
  • 基于C++ 的ASK数字通信系统仿真

    首先指明 xff1a 这是我大三时的一个课程设计 xff0c 希望对你有一定的指导意义 一 数字通信系统 在本次数字通信系统仿真中需要的课程基础主要有 xff1a 通信原理 xff0c 数字信号处理 xff0c C 43 43 语言程序设计
  • Hadoop集群配置

    伪分布集群安装 配置环境 linux系统 xff1a Centos7 虚拟机 xff1a VMware Workstation 16 Pro 一台Linux机器 xff0c 也可以称为是一个节点 xff0c 上面安装的有JDK环境 最上面的
  • 基本选择器

    jQuery基本选择器 span class token operator lt span script type span class token operator 61 span span class token string 34 t
  • 更改Windows的鼠标滚动方式为Mac方式(win鼠标滚轮反向)

    更改Windows的鼠标滚动方式为Mac方式 xff08 win鼠标滚轮反向 xff09 将Windows的滚动方向更改成和Mac一致的 自然 滚动 用习惯Mac系统偶尔用Windows xff0c 或者在Mac和Win之间倒腾来倒腾去的同
  • Java面试题

    Java面试题 并发面试题 集合面试题 一 Java基础 1 JDK和JRE有什么区别 JDK xff1a Java Development Kit 的简称 xff0c java 开发工具包 xff0c 提供了 java 的开发环境和运行环
  • VM虚拟机使用(文末有系统镜像)

    目录 前言 1 创建虚拟机 2 分盘操作 3 安装系统 4 备份 前言 本篇文章笔者详细述说了虚拟机的使用 xff0c 安装的是xp系统 xff0c 文末链接里面有xp与win7的系统镜像 若有问题 xff0c 希望大家斧正 xff08 手
  • linux必知必会-du命令

    du命令 du命令简介 du命令是linux系统里的文件大小查看的命令 du命令的应用场景十分广泛 xff1a 需要查看单个目录里面多个文件总大小 需要查看目录中每个文件的大小以及每个子文件夹中文件的大小 查看日志文件的大小 查看文件大小并
  • 解决在Ubuntu中设置了共享文件却找不到的原因

    可以看到我们在进入共享文件夹的时候 xff0c 并没有找到我们想要的文件 但文件夹里面是实实在在有文件的 解决方法 sudo vmhgfs fuse host mnt hgfs o nonempty o allow other 这个解决方法
  • python斐波那契数列

    基础python题 斐波那契数列 斐波那契数列指的是这样一个数列 xff1a 0 xff0c 1 1 xff0c 2 3 xff0c 5 8 xff0c 13 21 34 55 89 144 233 377 610 987 1597 题目分
  • python经典猴子偷桃

    猴子偷桃 题目 猴子吃桃问题 xff1a 猴子第一天摘下若干个桃子 xff0c 当即吃了一半 xff0c 还不瘾 xff0c 又多吃了一个第二天早上又将剩下的桃子吃掉一半 xff0c 又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个
  • python分解质因数

    分解质因数 题目 题目 将一个整数分解质因数 例如 xff1a 输入90 打印出90 61 233 5 程序分析 根本不需要判断是否是质数 xff0c 从2开始向数本身遍历 xff0c 能整除的肯定是最小的质数 代码如下 target sp
  • C语言学习笔记——数组

    数组 eg xff1a 使用数组保存数据 使用数组保存用户输入的数据 当输入完毕后逆向输出数据 span class token macro property span class token directive keyword inclu
  • c语言基础——一维数组的应用

    C语言基础 一维数组的应用 例如 在一个学校的班级中会有很多学生 此时就可以使用数组来保存这些学生的姓名 以便进行管理 eg xff1a 用数组保存学生姓名 本示例每一个元素都应该是可以保存字符串的类型 这里使用字符指针类型 span cl
  • c-起泡法

    起泡法 这个算法的名字由来是因为越小的元素会经由交换慢慢 浮 到数列的顶端 xff08 升序或降序排列 xff09 xff0c 就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样 xff0c 故名 冒泡排序 比较相邻的元素 如果第一个比第二
  • c++字符串连接

    编写一个程序 xff0c 将两个字符串连接起来 xff0c 结果取代第一个字符串 要求用string方法 int main int a b cin gt gt a gt gt b sort a b cout lt lt a lt lt 34
  • 用new调用函数的四步走

    JS规定 xff0c 使用new调用函数会进行四步走 xff1a 1 函数体内会自动创建出一个空白对象 2 函数的上下文 xff08 this xff09 会自动指向这个对象 3 函数体内的语句会执行 4 函数会自动返回上下文对象 xff0