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

相关文章

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no