【leetcode】-【javascript】

文章目录

  • 检查是否是类的对象实例
  • 数组原型对象的最后一个元素
  • 计数器

检查是否是类的对象实例

请你编写一个函数,检查给定的值是否是给定类或超类的实例。
可以传递给函数的数据类型没有限制。例如,值或类可能是 undefined 。

示例 1:
输入:func = () => checkIfInstance(new Date(), Date)
输出:true
解释:根据定义,Date 构造函数返回的对象是 Date 的一个实例。

示例 2:
输入:func = () => { class Animal {}; class Dog extends Animal {}; return checkIfInstance(new Dog(), Animal); }
输出:true
解释:
class Animal {};
class Dog extends Animal {};
checkIfInstanceOf(new Dog(), Animal); // true
Dog 是 Animal 的子类。因此,Dog 对象同时是 Dog 和 Animal 的实例。

示例 3:
输入:func = () => checkIfInstance(Date, Date)
输出:false
解释:日期的构造函数在逻辑上不能是其自身的实例。

示例 4:
输入:func = () => checkIfInstance(5, Number)
输出:true
解释:5 是一个 Number。注意,“instanceof” 关键字将返回 false。

思想:实例对象的__proto__指向该实例对象的原型对象的prototype对象,所以判断给定值是否是给定类的实例对象,直接判断obj.__proto__ === classFunction.prototype即可,由于原型链的存在,所以还需判断obj.__proto__ __proto__是否指向原型对象的prototype对象

prototype对象:用于放某同一类型实例的共享属性和方法,实质上是为了内存着想
每个实例对象都有一个__proto__属性,指向构造函数的prototype对象

var checkIfInstanceOf = function (obj, classFunction) {if (obj === null ||obj === undefined ||classFunction === null ||classFunction === undefined)return false;return (obj.__proto__ === classFunction.prototype ||checkIfInstanceOf(obj.__proto__, classFunction));
};

数组原型对象的最后一个元素

请你编写一段代码实现一个数组方法,使任何数组都可以调用array.last()方法,这个方法将返回数组最后一个元素。如果数组中没有元素,则返回 -1 。
你可以假设数组是 JSON.parse 的输出结果。

示例 1 :
输入:nums = [null, {}, 3]
输出:3
解释:调用 nums.last() 后返回最后一个元素: 3。
示例 2 :
输入:nums = []
输出:-1
解释:因为此数组没有元素,所以应该返回 -1

方法一:将 Nullish 合并运算符与 Array.prototype.at() 方法结合使用

Nullish:空合并运算符(??)。如果不为 null 或 undefined,则返回左侧操作数,否则返回右侧操作数。
Array.prototype.at() 方法接受一个整数值,并返回该索引处的元素,允许使用正整数和负整数。负整数从数组末尾开始计数。

Array.prototype.last = function() {return this.at(-1) ?? -1;
}

方法二:为最后一个属性定义一个 getter来增强数组原型,getter 函数将返回另一个函数,该函数返回数组的最后一个元素,如果数组为空,则返回 -1。

Object.defineProperty(Array.prototype, 'last', {get: function() {return () => this.length ? this[this.length - 1] : -1;}
});

当你定义一个 getter 时,你实际上是把 last 当作一个属性而不是一个函数。因此,它是通过 array.last 而不是 array.last() 访问的。如果您将数组的最后一个元素视为该数组的属性,而不是函数的结果

计数器

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

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

相关文章

【视频创作思维流程】教你从0培养视频创作思维

【视频创作思维流程】教你从0培养视频创作思维 1.创作认知2.培养自己的想象力2.1通过音乐辅助闭上眼睛想象2.2多看多见多模仿 3 视频脚本3.1简单的脚本3.2复杂脚本 4.拍摄预见能力4.1拍摄预见力思维用于转场4.2拍摄预见力思维给特效制作留住空间4.2拍摄预见力思维给字幕制作留住…

Web前端三大主流框架详解

Web前端三大主流框架详解 Web前端开发领域有许多框架和库可供选择,但其中最受欢迎的三大主流框架是 React、Vue.js 和 Angular。每个框架都有其独特的特点和优势,适用于不同类型的项目需求。以下是对这三大框架的详细介绍。 1. React 概述 React 是由…

src挖掘-记一次付费资源的sign绕过

0x01 前言 最近都没怎么挖到过细小的漏洞,一直纠结于一些比较难以实现的点,天天在各种测试、上线服务器里面fuzz找遗漏的点(bushi) 大概上周突破了一处付费资源免费调用,定级了,故发出来水水文 0x02 绕过过程 逛着逛着主站&…

五种最新算法求解柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),提供MATLAB代码

一、WSA求解FJSP FJSP:波搜索算法(Wave Search Algorithm, WSA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码-CSDN博客 二、SBOA求解FJSP FJSP:蛇鹫优化算法(Secretary bird optimization algorithm&a…

模糊小波神经网络(MATLAB 2018)

模糊系统是一种基于知识或规则的控制系统,从属于智能控制,通过简化系统的复杂性,利用控制法来描述系统变量之间的关系,采用语言式的模糊变量来描述系统,不必对被控对象建立完整的数学模型。相比较传统控制策略&#xf…

WIN系统 -> 以太网未识别的网络问题

1.方法1 2. 3. 根据诊断提示解决问题。 方法2. 右键以太网属性

GiantPandaCV | 浅谈分辨率对模型影响以及训练方法

本文来源公众号“GiantPandaCV”,仅用于学术分享,侵权删,干货满满。 原文链接:浅谈分辨率对模型影响以及训练方法 一、前言 最近几个人在讨论模型训练的时候,提到了一个尺度对于模型的影响以及训练方法的收益&#…

原来有这么多sora!

原来SORA有这么多! 作为AI模型:Sora是OpenAI在2024年推出的一个重要产品,它是继ChatGPT之后的另一力作。Sora是一个创新的文本到视频模型,意味着它能将用户提供的文本描述直接转换成视频内容。这个模型的特点是可以根据描述性提示…

Autosar Dem配置-手动配置DTC及使用-基于ETAS软件

文章目录 前言DemConfigSetDemDebounceCounterBasedClassDemDebounceBehaviorDemDebounceCounterDecrementStepSizeDemDebounceCounterFailedThresholdDemDebounceCounterIncrementStepSizeDemDebounceCounterJumpDownDemDebounceCounterJumpDownValueDemDebounceCounterJumpUp…

Python 初学者练习:验证哥德巴赫猜想

哥德巴赫猜想(Goldbach’s Conjecture,也被称为哥德巴赫-欧拉猜想或“每个大于2的偶数都可以写成两个素数之和”)是一个未解决的数学问题,尽管对于所有已经检验过的偶数都已经被验证成立,但我们仍然没有一个普适的证明…

操作系统|代表进程运行状态的各寄存器

本文主要资料来源于网络,这里只做一个简单的了解用,如果用错误还请读者指出指出。 在CPU架构中,尤其是x86架构,代表进程运行状态的通用寄存器包括了几个关键的寄存器,这些寄存器存储了与进程执行直接相关的各种信息。以…

一天挣几十元的网上兼职副业有哪些?推荐几个适合普通人做的兼职副业,有线上的也有线下的,建议收藏哦~

一天几十的兼职,不是几百的,这个会更容易实现。 相比网络上充斥着各种五花八门的兼职,教你轻松月入过万,一年几十万的...... 对于绝大多数没有一技之长的普通人,网络小白的话刚开始会很难的,慢慢来就可以…

AI+翻译 AI智能体平台扣子coze开发搭建

抖音出品的AI智能体平台,可以快速搭建自己的AI Agent工作流,并且提供了API供开发者调用 机器人Bot 工作流 官方插件 AI Agent AI 翻译 实现目的是 英译中 或 中译英,并生成对应的音频文件 开发智能体 创建speak工作流 > 输入 > 翻译…

Jenkins流水线pipeline--基于上一章的工作流程

1流水线部署 1.流水线文本名Jenkinsfile,将流水线放入gitlab远程仓库代码里面 2pipeline脚本 Jenkinsfile文件内容 pipeline {agent anyenvironment {key"value"}stages {stage("拉取git仓库代码") {steps {deleteDir()checkout scmGit(branches: [[nam…

自然语言处理(NLP)—— 置信度(Confidence)

1. 置信度(Confidence)的概念 置信度(Confidence)在机器学习和统计中通常指一个模型对其做出的预测是正确的确信程度。在分类任务中,置信度通常由模型赋予特定类别的概率值来表示。例如,在文本分类或实体识…

阿里云短信服务使用(Java)

文章目录 一、流程1.打开短信服务2.提交材料申请资质3.资质通过后,申请短信签名并设置短信模板4.右上角设置AccessKey5.充值 二、参考官方文档调用API1.引入maven依赖2.调用API补充 一、流程 1.打开短信服务 登陆注册阿里云 搜索“短信服务”,点击“免…

WHAT - 容器化系列(一)

这里写目录标题 一、什么是容器与虚拟机1.1 什么是容器1.2 容器的特点1.3 容器和虚拟机的区别虚拟机(VM):基于硬件的资源隔离技术容器:基于操作系统的资源隔离技术对比总结应用场景 二、容器的实现原理1. Namespace(命…

TVS管的功率计算与选型

“选择多大功率的TVS管才算合适?”。关于TVS功率的选择,不晓得之前你考虑过没。反正我这边是感觉网上关于TVS管参数、选型等文章比较多,但关于TVS管功率计算及功率选型的文章比较少。但往往在这些点上更能体现面试者的功力。 研究过TVS规格书…

go语言linux安装

下载:https://go.dev/dl/ 命令行使用 wget https://dl.google.com/go/go1.19.3.linux-amd64.tar.gz解压下载的压缩包,linux建议放在/opt目录下 我放在/home/ihan/go_sdk下 sudo tar -C /home/ihan/go_sdk -xzf go1.19.3.linux-amd64.tar.gz 这里的参数…

【LeetCode热题100总结】239. 滑动窗口最大值

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7]…