当前位置: 首页 > news >正文

JavaScript 前端面试 5()

十:new操作符


1:new操作符是什么

在JavaScript中new操作符是用于创建一个给定构造函数的实例对象

function Person(name,age){
this.name = name;
this.age = age;
}
Person.protoype.sayName = function (){
console,log(this.name)
}
cost person1 = new Person('Tom',20)
console.log(person1)//Person{name:"Tom",age:20}
t.sayName()//'Tom'

new通过构造函数Person创建出来的实例可以访问到构造函数中的属性
new通过构造函数Person创建出来的实例可以访问到构造函数原型链中的属性

如果增加返回的原始值会怎么样呢
 

function Test(name){
this.name = name
return 1
}
const t = new Test('xxx')
console.log(t.name)//'xxx'

可以看出返回值没有什么用
但是返回值变成一个对象会怎么样呢?
 

function Test(name){
this.name = name
console.log(this)//test{name:'xxx'}
return { age : 26}
}
const t = new Test('xxx')
console.log(t)//{age:26}
console.log(t.name)//'undefined'

如果构造函数返回一个对象那么返回值会被正常使用

2:new的工作流程

创建一个新的对象obj

将对象与构造函数通过原型链链接起来

将构造函数中的this绑定到新建的对象obj上

根据构建函数的返回类型作为判断,如果是原始值被忽略如果返回对象则正常处理

十一: bind、call、apply区别?如何实现一个bind?

1:作用

call apply bind作用是改变函数执行上下文,也就是改变函数运行时this指向

var name = "lucy";
var obj ={
name: "martin",
say: function(){
console.log(this.name);
}
};
obj.say();//martin,this 指向obj对象
setTimeout(obj.say,0);//Lucy,this指向window对象

从上面就可以看到say方法输出Martin

但是say放在setTimeout方法中,在定时器中是作为回调函数来执行的,因此回到主栈执行时是在全局执行上下文的环境中执行的,这时候this指向window ,所以输出lucy我们实际需要的是this指向obj对象,这时候就需要该改变this指向了
 

setTimeout(obj.say.bind(obj),0);//martin,this指向obj对象


2:区别

apply、call、bind区别于:

三者第一个参数都是this要指向的对象,如果没有这个参数或者参数为null或者undefined,则默认指向全局window

三者都可以传参,但是apply是数组,而call是参数列表,而且apply和call是一次性传如参数,而bind可以分为多次传入
bind 是返回绑定this之后的函数,apply、call则是立即执行

3:实现

修改this指向

动态传递参数

兼容new关键字

Function.prototype.myBind = function(context){
if(typeof this !==“function”){
throw new TypeError("Error");
}
const args = [...arguments].slice(1),
fn=this;
return function Fn(){
return fn.apply(this instanceof Fn ? new fn(...argumnets):context,args.concat(...arguments));}
}

相关文章:

JavaScript 前端面试 5()

十:new操作符 1:new操作符是什么 在JavaScript中new操作符是用于创建一个给定构造函数的实例对象 function Person(name,age){ this.name name; this.age age; } Person.protoype.sayName function (){ console,log(this.name) } cost person1 new…...

【Jenkins】显示 HTML 标签

需求 在 Jenkins 中显示 HTML 标签内容(例如格式化的文本、颜色、图标等)是一个常见的需求,如下,编译工程显示当前编译的分支: 但 Jenkins 默认会出于安全考虑(防止 XSS 攻击)转义 HTML 标签&a…...

DeepSeek R1模型提示语技巧:如何高效引导AI生成优质内容

文章目录 明确任务目标提供上下文使用结构化提示指定输出格式控制输出长度调整语气和风格提供示例迭代优化提示语避免歧义结合多轮对话总结 DeepSeek R1是一款基于大规模语言模型的AI工具,能够生成高质量的自然语言内容。为了充分发挥其潜力,用户需要掌握…...

UE5从入门到精通之多人游戏编程常用函数

文章目录 前言一、权限与身份判断函数1. 服务器/客户端判断2. 网络角色判断二、网络同步与复制函数1. 变量同步2. RPC调用三、连接与会话管理函数1. 玩家连接控制2. 网络模式判断四、实用工具函数前言 UE5给我们提供了非常强大的多人网路系统,让我们可以很方便的开发多人游戏…...

NGINX配置TCP负载均衡

前言 之前本人做项目需要用到nginx的tcp负载均衡,这里是当时配置做的笔记;欢迎收藏 关注,本人将会持续更新 文章目录 配置Nginx的负载均衡 配置Nginx的负载均衡 nginx编译安装需要先安装pcre、openssl、zlib等库,也可以直接编译…...

PyTorch torch.logsumexp 详解:数学原理、应用场景与性能优化(中英双语)

PyTorch torch.logsumexp 详解:数学原理、应用场景与性能优化 在深度学习和概率模型中,我们经常需要计算数值稳定的对数概率操作,特别是在处理 softmax 归一化、对数似然计算、损失函数优化 等任务时,直接求和再取对数可能会导致…...

【多模态大模型】端侧语音大模型minicpm-o:手机上的 GPT-4o 级多模态大模型

MiniCPM-o ,它是一款 开源、轻量级 的多模态大语言模型,目标是在手机等资源受限的环境中实现 GPT-4o 级别的多模态能力! 1. MiniCPM-o:小身材,大能量! MiniCPM-o 的名字已经暗示了它的核心特点:Mini (小巧) 和 CPM (中文预训练模型),最后的 “o” 则代表 Omnimodal …...

【Java 优选算法】模拟

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 模拟算法的思路比较简单,根据题目描述列出流程,找出规律,将流程转化为代码 替换所有的问号 题目链接 解法 直接根据题目给出条件模拟 示例,找出规律 1.先找出字符?,再…...

计算机网络复习

目录 1. 前言 2.五层模型 1.应用层 2 传输层 3.网络层 4. 数据链路层 ​编辑5. 物理层 3.UDP/TCP协议 UDP协议 TCP协议 4. HTTP/HTTPS协议 1. 前言 博主目前大四, 备战春招, 复习一下计网, 大家也可以看看我的文章. 共同学习, 如有不足之处欢迎指正. 2.五层模型 在计…...

应用层的协议-http/https的状态码

1xx:表示临时响应,需要操作者继续操作 2xx:成功,操作被成功接受并处理 3xx:一般是重定向问题 4xx:客户端的问题 5xx:服务端的问题 1xx: 100: 表示服务器收到客户端的第一部分请…...

文字语音相互转换

目录 1.介绍 2.思路 3.安装python包 3.程序: 4.运行结果 1.介绍 当我们使用一些本地部署的语言模型的时候,往往只能进行文字对话,这一片博客教大家如何实现语音转文字和文字转语音,之后接入ollama的模型就能进行语音对话了。…...

C++之类型转换

目录 C语言中的类型转换 隐式类型转换 强制类型转换 C中的类型转换 static_cast reinterpret_cast const_cast dynamic_cast 本期我们将学习C中类型转换的相关知识点。 C语言中的类型转换 在C语言中,也有过类型转换的情景。 隐式类型转换 隐式类型转换…...

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置 前言整体思路安装 WSL2Windows 环境升级为 WIN11 专业版启用window子系统及虚拟化 安装WSL2通过 Windows 命令提示符安装 WSL安装所需的 Linux 发行版(如 Ubuntu 20.04)查看…...

【数据库】【MySQL】索引

MySQL中索引的概念 索引(MySQL中也叫做"键(key)")是一种数据结构,用于存储引擎快速定找到记录。 简单来说,它类似于书籍的目录,通过索引可以快速找到对应的数据行,而无需…...

大语言模型(LLM)提示词(Prompt)高阶撰写指南

——结构化思维与工程化实践 一、LLM提示词设计的核心逻辑 1. 本质认知 LLM是「超强模式识别器概率生成器」,提示词的本质是构建数据分布约束,通过语义信号引导模型激活特定知识路径。优秀提示词需实现: 精准性:消除歧义&#…...

LabVIEW C编译支持工具库CCompileSupp.llb

路径:C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform\CCompileSupp.llb ​ 1. 工具库概述 定位:LabVIEW内置的C语言编译支持工具库,用于处理LabVIEW与C/C代码的混合编程接口,涵盖编译器配置、代码生成…...

【安装及调试旧版Chrome + 多版本环境测试全攻略】

👨💻 安装及调试旧版Chrome 多版本环境测试全攻略 🌐 (新手友好版 | 覆盖安装/运行/调试全流程) 🕰️ 【背景篇】为什么我们需要旧版浏览器测试? 🌍 🌐 浏览器世界的“…...

整数二分算法

例题: 给定一个按照升序排列的长度为 n 的整数数组,以及 q个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0开始计数)。 如果数组中不存在该元素,则返回 -1 -1。 输入格式 第一行…...

【java】this关键字

在 Java 中,this 是一个特殊的关键字,它代表当前对象的引用。简单来说,this 指向当前正在调用方法或构造函数的对象。this 关键字的主要作用是解决变量名冲突、访问当前对象的成员变量或方法,以及在构造函数中调用其他构造函数。 …...

LD_PRELOAD 绕过 disable_function 学习

借助这位师傅的文章来学习通过LD_PRELOAD来绕过disable_function的原理 【PHP绕过】LD_PRELOAD bypass disable_functions_phpid绕过-CSDN博客 感谢这位师傅的贡献 介绍 静态链接: (1)举个情景来帮助理解: 假设你要搬家&#x…...

计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型民宿推荐系统 hive民宿可视化 民宿爬虫 大数据毕业设计(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

MySQL后端返回给前端的时间变了(时区问题)

问题:MySQL里的时间例如为2025-01-10 21:19:30,但是返回到前端就变成了2025-01-10 13:19:30,会出现小时不一样或日期变成隔日的问题 一般来说设计字段时会使用datetime字段类型,这是一种用于时间的字段类型,而这个类型…...

Apache Doris:一款高性能的实时数据仓库

Apache Doris 是一款基于 MPP 架构的高性能、实时分析型数据库。它以高效、简单和统一的特性著称,能够在亚秒级的时间内返回海量数据的查询结果。Doris 既能支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。 Apache Doris 最初是百度广告报表业务…...

【量化-什么是信息?怎么有效的学习?关键字摘取】

到底什么是信息呢?我们怎么衡量信息的价值与多少呢?今天,我们就来说说这个问题。 怎么量化信息? 信息,只有量化了才能被准确地讨论,而量化的方法就和事件发生的概率密切相关。或者说得直白一些&#xff0…...

Java之异常体系

异常:异常就是代表程序出现问题 异常的继承体系: Error:严重异常,内存溢出等 其他异常:编译时异常:编译阶段就要进行处理的异常(提醒程序员检查本地信息) RuntimeException&#…...

网络运维学习笔记(DeepSeek优化版)002网工初级(HCIA-Datacom与CCNA-EI)子网划分与协议解析

文章目录 子网划分与协议解析1. VLSM与CIDR技术解析1.1 VLSM(Variable Length Subnetwork Mask,可变长子网掩码)1.2 CIDR(Classless Inter-Domain Routing,无类域间路由) 2. 子网划分方法与计算2.1 常规划分…...

【Linux知识】Linux上从源码编译到软件安装全过程详细说明

文章目录 **1. 下载源码****(1) 使用 wget 或 curl 下载****(2) 解压源码** **2. 配置编译环境****(1) 执行 ./configure 脚本**常见参数说明: **3. 编译源码****(1) 执行 make** **4. 安装软件****(1) 执行 make install****(2) 自定义安装路径** **5. 验证安装***…...

【尝试使用python调用Seismic unix】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、代码总结 前言 提示:这里可以添加本文要记录的大概内容: 使用seismic unix尝试建立界面,首先想到使用pyqt&#xff0c…...

JSON Web Token在登陆中的使用

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络应用环境间安全地传递声明。它的主要用途是身份验证和信息交换。在微服务架构中,JWT 作为认证机制非常常见,特别是与 API 网关结合使用…...

CSS滚动条原理与自定义样式指南,CSS滚动条样式失效,滚动条样式无效,-webkit-scrollbar无效,overflow不显示滚动条

滚动内容形成的必要条件 CSS Overflow属性解析 MDN官方文档-Overflow属性 菜鸟教程-Overflow属性 overflow 属性控制内容溢出元素框时在对应的元素区间内是否添加滚动条。 值描述visible默认值。内容不会被修剪,会呈现在元素框之外。hidden内容会被修剪&#xf…...

陀螺匠·企业助手v1.8 产品介绍

陀螺匠企业助手是一套采用Laravel 9框架结合Swoole高性能协程服务与Vue.js前端技术栈构建的新型智慧企业管理与运营系统。该系统深度融合了客户管理、项目管理、审批流程自动化以及低代码开发平台,旨在为企业提供一站式、数字化转型的全方位解决方案,助力…...

【数据结构】(11) Map 和 Set

一、Map 和 Set 的简介 1、Set 和 Map Map 和 Set 是集合类框架学习的最后一部分。Map 和 Set 都是接口,需要通过 TreeSet、HashSet 和 TreeMap、HashMap 实例化。注意,Set 实现了 Collection,Map 并没有。 Set 存放的是键(Key&a…...

DeepSeek 提示词:高效的提示词设计

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

【Redis】在Java中以及Spring环境下操作Redis

Java环境下&#xff1a; 1.创建maven 项目 2.导入依赖 <!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version></dependency> 此处使用的是Jedis&…...

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;二&#xff09;配置网络与登录本地远程Linux主机 前言一、使用命令行&#xff08;nmcli 命令&#xff09;配置网络&#xff0c;配置主机名第一步第二步修改主机名称 二、使用图形化界面&#xff08;nmtui 命令&#xff09;配…...

新数据结构(13)——I/O

字符流 字符输入流&#xff08;Reader&#xff09; 字符输入流用于从数据源&#xff08;如文件、字符串等&#xff09;读取字符数据。Reader 是所有字符输入流的抽象基类。 常用实现类 FileReader 用于从文件中读取字符数据。 InputStreamReader 将字节流转换为字符流&…...

C语言学习,希尔排序

C语言&#xff0c;希尔排序是插入排序的一种&#xff0c;也称为递减增量排序。通过比较距离较远的元素&#xff0c;然后逐渐缩小间隔&#xff0c;直到整个数组变成有序的。这种排序方法减少了插入排序&#xff0c;大数据集的移动次数&#xff0c;提高了效率。 示例&#xff1a…...

Powershell Install deepseek

前言 deepseekAI助手。它具有聊天机器人功能&#xff0c;可以与用户进行自然语言交互&#xff0c;回答问题、提供建议和帮助解决问题。DeepSeek 的特点包括&#xff1a; 强大的语言理解能力&#xff1a;能够理解和生成自然语言&#xff0c;与用户进行流畅的对话。多领域知识&…...

22、《Spring Boot消息队列:RabbitMQ延迟队列与死信队列深度解析》

Spring Boot消息队列实战&#xff1a;RabbitMQ延迟队列与死信队列深度解析 引言 在现代分布式系统中&#xff0c;消息队列承担着解耦、削峰填谷和异步通信的重要职责。本文将深入探讨Spring Boot与RabbitMQ的整合应用&#xff0c;重点解析延迟队列与死信队列的实现原理及实战…...

性能测试项目实战

项目介绍和部署 项目背景 轻商城项目是一个现在流行的电商项目。我们需要综合评估该项目中各个关键接口的性能&#xff0c;并给出优化建议&#xff0c;以满足项目上线后的性能需要。 项目功能架构 前台商城&#xff1a;购物车、订单、支付、优惠券等 后台管理系统&#xff1a;商…...

LabVIEW中显微镜下位移误差的畸变

在显微实验中&#xff0c;位移台通过电机驱动探针进行微米级精确移动&#xff0c;配合显微镜和相机实时观察探针的位置。然而&#xff0c;实验中发现&#xff0c;当电机移动相同的物理距离时&#xff0c;图像中探针的像素位移量存在显著的非线性偏差。经测试&#xff0c;电机的…...

Spark MLlib中的机器学习算法及其应用场景

Spark MLlib是Apache Spark框架中的一个机器学习库&#xff0c;提供了丰富的机器学习算法和工具&#xff0c;用于处理和分析大规模数据。以下是Spark MLlib中的机器学习算法及其应用场景的详细描述&#xff1a; 一、Spark MLlib中的机器学习算法 分类算法&#xff1a; 逻辑回…...

Angular 中获取 DOM 节点的几种方法

文章目录 1. 使用ViewChild获取单个 DOM 节点2. 使用ViewChildren获取多个 DOM 节点3. 使用ElementRef直接访问 DOM4. 使用Renderer2操作 DOM5. 总结 在 Angular 开发中&#xff0c;虽然框架鼓励我们通过组件和模板来操作 DOM&#xff0c;但在某些情况下&#xff0c;直接访问和…...

R Excel 文件:高效数据处理的利器

R Excel 文件:高效数据处理的利器 在数据分析领域,R语言因其强大的统计分析和可视化功能而备受推崇。而R Excel文件,作为R语言与Excel的桥梁,使得数据在R和Excel之间的高效转换成为可能。本文将详细介绍R Excel文件的概念、应用场景以及操作方法。 一、R Excel文件的概念…...

手撕跳表/数据结构

昨天leetcode每日一题是跳表&#xff0c;之前学redis就没去写跳表&#xff0c;这次就逃不过了。 这里使用了len数组&#xff0c;来表示每个数字之间的间隔&#xff0c;方便复杂的查询功能。 主要问题有 为什么len数组记录的是数字之间的间隔&#xff0c;不是每一层从头到尾…...

在 Vue 中处理跨域请求:全面解析与实践指南

在 Vue 中处理跨域请求&#xff1a;全面解析与实践指南 在现代 Web 开发的复杂生态中&#xff0c;跨域请求&#xff08;CORS&#xff09;如同一个无处不在的难题&#xff0c;时刻考验着开发者的技术能力。当我们构建基于 Vue.js 的前端应用时&#xff0c;这一问题尤为凸显。因为…...

爬虫与反爬-Ja3指纹风控(Just a moment...)处理方案及参数说明

概述&#xff1a;本文将针对Ja3 指纹检测风控进行处理&#xff0c;举例了一个案例并使用两种不同的破解方案进行突破&#xff0c;同时深入了解指纹间不同字符所代表的含义 指纹检测背景&#xff1a; 1、每一个设备、软件都有独属于自己的设备信息、版本号、加密算法、椭圆算法…...

WPF-Avalonia实践一两个页面的相关传递

文章目录 注册两个ViewModel关联-Interaction在 Avalonia 框架中的 Interaction作用目的典型的使用场景显示对话框:文件操作:定义交互属性示例代码视图层处理交互总结例子-实现两个界面信息传递Interaction注册在主VIEWModel中注册异步方法按钮主viewModel对应的显示xaml-使用…...

无人机实战系列(三)本地摄像头+远程GPU转换深度图

这篇文章将结合之前写的两篇文章 无人机实战系列&#xff08;一&#xff09;在局域网内传输数据 和 无人机实战系列&#xff08;二&#xff09;本地摄像头 Depth-Anything V2 实现了以下功能&#xff1a; 本地笔记本摄像头发布图像 远程GPU实时处理&#xff08;无回传&#…...

LeetCode:数组异或操作

数组异或操作 描述 给你两个整数&#xff0c;n 和 start 。 数组 nums 定义为&#xff1a;nums[i] start 2*i&#xff08;下标从 0 开始&#xff09;且 n nums.length 。 请返回 nums 中所有元素按位异或&#xff08;XOR&#xff09;后得到的结果。 示例 1&#xff1a;…...