js的new运算符做了哪些事情(0基础知识精细分解系列)

2023-12-07 17:38

本文主要是介绍js的new运算符做了哪些事情(0基础知识精细分解系列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<script>//依赖的前备知识:1/ 值类型和引用类型的存储区别 (有别名,地址,指向等概念)// 2/ 函数 -》 js中也用函数表示类// 3/ 赋值// 4/ 实例概念:new Class1(Class1是个函数),可以构造一个对象,这个对象称为Class1类的实例。可见:实例就是对象,进一步说是属于某类的对象。// 5/ call方法作用// 6 上下文this 的本质: 函数是谁调用的,这个this就指向谁 【好记:指向函数的调用者】// 7 结合5和6,call 的本质是改变函数里的上下文function Person(name,age){this.name = name;this.age = age;this.sayName = function(){console.log(this.name);}}//8 原型/原型链的概念和new 一起认知即可。 【在下面person2.__proto__后面一个注释中也有说】Person.prototype.sayAge = function() {console.log(this.age);};// 创建 对象(此对象创建出来后用person1来指向它,创建完后它是Person类的实例) 的方法1://[teacher: 此知识点基于堆区和栈区的概念。 new Person表达式是在堆区创建出一个Person类的实例,// 实例的意思还需要跟学生强调一下(某个类的实例就是属于某个类的对象,比喻人类和个体人);// 创建完成后执行赋值person1 =, 这是把刚才创建的对象的地址(基于引用类型的地址概念)赋值给变量,// 变量存的只是个地址]var person1 = new Person('gaos',23);person1.sayName();person1.sayAge();console.log( Person === Person.prototype.constructor );//trueconsole.log( person1 instanceof Person);//trueconsole.log( person1.constructor === Person );//true// 创建对象方法2: new 的操作相当于以下三步var person2={}; //初始化一个对象person2。//以下说的原型就是原型对象,平常习惯把对象省略,称其为原型。 它本质上是个对象console.dir(person2); //Object; 本来person2的原型是 Objectperson2.__proto__ = Person.prototype; //把person2的原型指向Person的原型上.  复习想想引用类型的赋值是怎么回事(别名,地址。指针指向)/*** 注:初学者不知道这个是啥:__proto__。 这个就是原型链的概念:* 对象找属性的时候先在自己的内部找,比如如果 person2={ name:1},那么 person2.name 就先找到{}里的name, 找不到怎么办?* 就通过原型链上找,原型链就是这个__proto__属性。* 上面那个如果是找 sayAge (person2.sayAge)就能在原型链对象(__proto__指向的那个对象) 中找到了。** 原型的概念:* js中每个函数(当作类)都有原型,如 Person.prototype 表示 Person的原型。*/Person.call(person2,'gaos',23); //构造person2,也可以称之为初始化person2。 复习call的用法,函数.call 会把函数里的上下文(this)指向call传入的第一个参数指定的对象。person2.sayName();person2.sayAge();console.log( Person === Person.prototype.constructor );//trueconsole.log( person2 instanceof Person);//trueconsole.log( person2.constructor === Person );//true
</script>

 

这篇关于js的new运算符做了哪些事情(0基础知识精细分解系列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/466746

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

Python中的魔术方法__new__详解

《Python中的魔术方法__new__详解》:本文主要介绍Python中的魔术方法__new__的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、核心意义与机制1.1 构造过程原理1.2 与 __init__ 对比二、核心功能解析2.1 核心能力2.2

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

Python中__new__()方法适应及注意事项详解

《Python中__new__()方法适应及注意事项详解》:本文主要介绍Python中__new__()方法适应及注意事项的相关资料,new()方法是Python中的一个特殊构造方法,用于在创建对... 目录前言基本用法返回值单例模式自定义对象创建注意事项总结前言new() 方法在 python 中是一个

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2