关键字 new 创建对象的内部步骤

 工厂模式 创建对象

function creatPerson(name, age, job) {let obj = new Object();obj.name = name;obj.age = age;obj.job = job;obj.sayName = function () {alert(this.name);};return obj;
}let person1 = creatPerson('al',26,'Doctor')
let person2 = creatPerson('hyk',26,'Teacher')

关键字 new + 构造函数 创建对象 

function Person(name, age, job) {this.name = name;this.age = age;this.sayName = function () {alert(this.name);};
}let person1 = new Personal("al", 26, "Doctor");
let person2 = new Personal("hyk", 26, "Teacher");

可以看到

这个例子的 Person() , 取代了之前的 creatPerson () ,对比之后可以发现,两个函数中 除了相同的部分之外,还存在以下不同之处

  1. 没有显式的创建对象,也就是没有使用 new Object()  来创建一个空对象
  2. 直接将属性和方法赋值给了这个函数内部的 this 对象
  3. 没有显式的 return 语句 ,我们知道函数没有显式的return,那就在执行完毕之后返回一个undefined
  4. 函数名是大写字母开头,按照惯例,构造函数函数名始终都应该是 以大写字母开头,非构造函数则是小写,这么写主要是为了区别 其他函数,因为 构造函数本身也是一个函数,只不过可以用来创建对象而已。

可以看到 ,我们创建了 两个 实例,都是通过 使用 new 操作符,实际上在 通过 new 操作符  调用构造函数  的时候 实际上 会经历 以下 四个步骤

  1. 创建一个新对象
  2. 将构造函数的 作用域 赋值给新对象,因此 this  就指向了这个新对象
  3. 执行构造函数中的代码,也就是为这个 新对象 添加属性 和方法,所以是this.属性、this.方法
  4. 返回新对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/23688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国中医中药元宇宙 中药材价格缘何“狂飙”

◇相比去年同期,有超200个常规品种涨幅高于50%,25个常用大宗药材涨幅超200%,个别品种甚至涨价4至9倍 ◇在中药材价格普遍高涨的情况下,部分市场仓库库存数量也较多,出现囤积居奇倾向 ◇“不少游资和热钱涌入中药材市场…

flutter开发实战-实现音效soundpool播放音频及控制播放暂停停止设置音量

flutter开发实战-实现音效soundpool播放音频 最近开发过程中遇到低配置设备时候,在Media播放音频时候出现音轨限制问题。所以将部分音频采用音效sound来播放。 一、音效类似iOS中的Sound 在iOS中使用sound来播放mp3音频示例如下 // 通过通知的Sound设置为voip_c…

Spring Boot + Vue3前后端分离实战wiki知识库系统<十一>--文档管理功能开发三

文档内容的显示: 在上一次Spring Boot Vue3前后端分离实战wiki知识库系统<十>--文档管理功能开发二文档管理模块还差文档的显示木有完成,所以接下来先将这块模块给收尾了。 增加单独获取内容的接口: 概述&#xff…

设计模式、Java8新特性实战 - List<T> 抽象统计组件

一、背景 在日常写代码的过程中,针对List集合,统计里面的某个属性,是经常的事情,针对List的某个属性的统计,我们目前大部分时候的代码都是这样写,每统计一个变量,就要定义一个值,且…

ATTCK实战系列-红队评估 (红日靶场3)Vulnstack三层网络域渗透靶场

文章目录 环境配置靶场介绍靶场设置 外网渗透信息收集端口扫描目录扫描 漏洞发现与利用获取ssh账号密码,登录centos 提权 内网渗透建立代理内网信息收集smb暴破,获取本地管理员密码 横向移动使用psexec模块上线msf 环境配置 靶场介绍 靶场地址 http:/…

pid算法C语言实现

理论我就不多说了,网都已经很多了,但能直接看到效果的确不多。这里我就提供一个C语言实现的可以看到效果的实际例程。 pid.h #ifndef __PID_H #define __PID_Htypedef struct pid {int error_last;int error_last_last;float kp;float ki;f…

cookie/sessionStorage/localStorage 的区别

cookie/sessionStorage/localStorage 的区别 cookie、sessionStorage、localStorage 都是保存本地数据的方式 其中,cookie 兼容性较好,所有浏览器均支持。浏览器针对 cookie 会有一些默认行为,比如当响应头中出现set-cookie字段时&#xff0c…

剑指Offer 20.表示数值的字符串

20.表示数值的字符串 题目 官方地址 代码(正则表达式) public boolean isNumeric (String str) {if (str null || str.length() 0)return false;return new String(str).matches("[-]?\\d*(\\.\\d)?([eE][-]?\\d)?"); }在给定的代码…

PCIE链路信息

目录 简介: 目的: 详情: 简介: PCIe有很多寄存器,也有很多控制,包括链路状态信息,上一节我们讲到了PCie的链路训练,这节文章将继续学习PCIe相关知识。 目的: 从设计…

【Python从小白到高手】---函数基础

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【Python小白从入门到精通】🎈 本专栏旨在分享学习Python的一点学习心得,欢迎大家在评论区讨论💌 目录…

iPhone 6透明屏是什么?原理、特点、优势

iPhone 6透明屏是一种特殊的屏幕技术,它能够使手机屏幕变得透明,让用户能够透过屏幕看到手机背后的物体。 这种技术在科幻电影中经常出现,给人一种未来科技的感觉。下面将介绍iPhone 6透明屏的原理、特点以及可能的应用。 iPhone 6透明屏的原…

本地 shell无法连接centos 7 ?

1、首先检查是否安装ssh服务; yum list installed | grep openssh-server# 没有安装尝试安装下 yum install openssh-server 2、检查ssh服务是否开启 systemctl status sshd.service# 未开启,开启下 systemctl start sshd.service # 将sshd 服务添…

socker套接字

1.打印错误信息 2.socketaddr_in结构体 结构体: (部分库代码) (宏中的##) 3.manual TCP: SOCK_STREAM : 提供有序地,可靠的,全双工的,基于连接的流式服务 UDP: 面向数据报

406 · 和大于S的最小子数组

链接:LintCode 炼码 - ChatGPT!更高效的学习体验! 题解:同向双指针 九章算法 - 帮助更多程序员找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧 class Solution { public:/*** param nums: an array …

《Java面向对象程序设计》学习笔记——第 5 章 继承与接口

​专栏:《Java面向对象程序设计》学习笔记 第 5 章 类与对象 5.1 子类与父类 有新类继承一般类视频讲解的状态和行为,并根据需要增加新的状态和行为。 由继承得到的类称为子类,被继承的类称为父类(超类)。 Java 不…

【maven】构建项目前clean和不clean的区别

其实很简单,但是百度搜了一下,还是没人能简单说明白。 搬用之前做C项目时总结结论: 所以自己在IDE里一遍遍测试程序能否跑通的时候,不需要clean,因为反正还要改嘛。 但是这个项目测试好了,你要打成jar包给…

element-tree-line el-tree 添加结构线 添加虚线

概览:给element组件添加上虚线,通过使用插件element-tree-line 参考连接: 参考别人的博客 安装插件: # npm npm install element-tree-line -S # yarn yarn add element-tree-line -S main.js全局注册引入插件: imp…

Python批量查字典和爬取双语例句

最近,有网友反映,我的批量查字典工具换到其它的网站就不好用了。对此,我想说的是,互联网包罗万象,网站的各种设置也有所不同,并不是所有的在线字典都可以用Python爬取的。事实上,很多网站为了防…

Linux文本三剑客---grep、sed、awk

目录标题 1、grep1.1 命令格式1.2命令功能1.3命令参数1.4grep实战演练 2、sed2.1 认识sed2.2命令格式2.3常用选项options2.4地址定界2.5 编辑命令command2.6用法演示2.6.1常用选项options演示2.6.2地址界定演示2.6.3编辑命令command演示 3、awk3.1认识awk3.2常用命令选项3.3awk…

向表中随机插入字符串数据

已知表 向该表中插入指定次数的随机字符串: 代码如下: DROP PROCEDURE sc //CREATE PROCEDURE sc(num INT) BEGIN DECLARE str VARCHAR(26) DEFAULT "abcdefghijklmnopqrstuvwxyz"; DECLARE cnt INT DEFAULT 0; DECLARE startIndex INT DEFAULT 1; DE…