学习前端第三十七天(静态属性静态方法、类检查、错误处理)

一、静态属性和静态方法

1、静态属性静态方法

在属性和方法前加上static,创建属于类自己的属性和方法

       class Person {// 加static,属于类自己的static name = "xc";   // 类的name属性static height = 183;  // 类的height属性static age = 20;      // 类的age属性static sayName() {    // 类的sayName方法console.log(this.name)}static sayHeight() {  // 类的sayHeight方法console.log(this.height)}// 不加static,属于类创建的对象的name = "jack";     // 调用类创建的对象里面的属性height = 165;     // 调用类创建的对象里面的属性sayName() {        // 调用类创建的对象里面的方法console.log(this.name)}sayHeight() {        // 调用类创建的对象里面的方法console.log(this.height)}}Person.sayName();    // xcPerson.sayHeight();    // 183new Person().sayName(); // jacknew Person().sayHeight(); // 165

2、继承静态属性静态方法

本质为原型继承,将Admin的原型设置为Person

使用方法:class Admin extends Person { };  类Admin现在可以调用Person里面的方法了

        class Person {static uname = "xc";static age = 20;static sayName() {console.log(this.uname)}username = "jack";sayName() {console.log(this.username)}}class Admin extends Person { };console.log(Admin.age);   // 20Admin.sayName();  //  xc

 

二、类检查

三种检测数据类型的方法

第一种:typeof

以字符串的形式返回数据类型

优点:简单快捷

缺点:只能检测除null外的基本数据类型和function

第二种:instanceof

判断某个对象是否属于一种引用数据类型,返回布尔类型

例: console.log([1, 2, 3] instanceof Array); // true

优点:可以判断出复杂的引用数据类型

缺点:不能检测基本数据类型

第三种:Object.prototype.toString.call()

 console.log(Object.prototype.toString.call(100)) ; // [ object Number ]

优点:能检测出所有数据类型

缺点:IE6下,undefined和null均为Object

三、错误处理

1、try....catch....

try { // 代码... }

catch (err) { // 错误捕获 }

如果 try 中的代码块出错,停止执行try中的代码,仍然继续执行 catch 中的及后面的代码块

仅对运行时的 error 有效,语法错误无效

        try {console.log(ad);say();console.log("....");} catch (error) {  // 错误信息被存在了变量“error”中console.dir(error);console.log(error.name);console.log(error.message);console.log(error.stack);}

name

Error 名称。例如,对于一个未定义的变量,名称是 "ReferenceError"

message

关于 error 的详细文字描述。

还有其他非标准的属性在大多数环境中可用。其中被最广泛使用和支持的是:

stack 

当前的调用栈:用于调试目的的一个字符串,其中包含有关导致 error 的嵌套调用序列的信息。

throw  : 

 // Throw 任意位置中断当前代码执行,抛出错误信息

        console.log(1)

        console.log(2)

        // throw 后面必须是new Error()构建的对象,里面有 name:"";  message:"";  stack:"":

        throw new Error("message hello");

        console.log(3)

        console.log(4)

 

try。。。catch。。和throw结合,自定义什么时候报错,且报错信息是什么

        let age;try {   // 使用try缩小报错影响范围age = prompt("age?")if (+age > 0 && age < 130) {console.log(age + "岁");} else {throw new Error("error age");}console.log("Right age");  // age是否正确决定这行是否执行} catch (error) {console.log(error)}

try后面有个finally代码,一定会执行

        // try...catch(error)...finally...try {throw new Error();} catch (error) {console.log(error); // try中报错时执行} finally {console.log("finally"); // 一定会执行,不管是否报错}

 

全局catch

定义在开头,程序有错误时调用,停止执行当前程序

        window.onerror = function (message, url, line, col, error) {console.log("hello");console.dir(error)};throw new Error("error");console.log("1");console.log("1");

 

2、自定义Error,扩展Error

使用类继承和,自定义什么时候报错,且报错信息是什么,我们可以语义化错误,设置不同的情景错误

        // 自定义Error,设置不同的情景错误,都继承于Errorclass ageError extends Error {name = "ageError";};class phoneError extends Error {name = "phoneError";};class emailError extends Error {name = "emailError";};try {// throw new ageError("年龄错误");// throw new phoneError("手机号码错误");throw new emailError("邮箱号码错误")} catch (error) {console.log(error.name);console.log(error.message);}

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

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

相关文章

设计模式14- Chain of Responsibility Method 责任链设计模式

设计模式14- Chain of Responsibility Method 责任链设计模式 1.定义 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式。它通过把请求从一个对象传到链条中的下一个对象的方式&#xff0c;直到请求被处理完毕&#xff0c;以实现解耦…

weblogic 任意文件上传 CVE-2018-2894

一、漏洞简介 在 Weblogic Web Service Test Page 中存在一处任意文件上传漏洞&#xff0c; Web Service Test Page 在"生产模式"下默认不开启&#xff0c;所以该漏洞有一定限制。利用该 漏洞&#xff0c;可以上传任意 jsp 文件&#xff0c;进而获取服务器权限。 二…

[链表专题]力扣141, 142

1. 力扣141 : 环形链表 题 : 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾…

数据结构------二叉树经典习题1

博主主页: 码农派大星. 关注博主带你了解更多数据结构知识 1判断相同的树 OJ链接 这道题相对简单,运用我们常规的递归写法就能轻松写出 所以我们解题思路应该这样想: 1.如果p为空&#xff0c;q为空&#xff0c;那么就是两颗空树肯定相等 2.如果一个树为空另一棵树不为空那么…

2024年,诺基亚手机发售仅一天就售罄

在智能手机越来越同质化的今天&#xff0c;各家都只卷性能和相机&#xff0c;大火的 AI 对于咱来说好像实用性又不太大&#xff0c;机圈属实整的有点儿无聊。 不过在阿红这两天上网冲浪的时候&#xff0c;一个陌生又熟悉的名字闯入了我的视线&#xff0c;——诺基亚&#xff08…

维护表空间中的数据文件

目录 向表空间中添加数据文件 从表空间中删除数据文件 删除users表空间中的users02.dbf数据文件 对数据文件的自动扩展设置 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 维护表空间中的数据文件主要包括向表空间中添…

深度学习中常见的九种交叉验证方法汇总

目录 1. K折交叉验证&#xff08;K-fold cross-validation&#xff09; 2. 分层K折交叉验证&#xff08;Stratified K-fold cross-validation&#xff09; 3. 时间序列交叉验证&#xff08;Time Series Split&#xff09; 4. 留一交叉验证&#xff08;Leave-One-Out Cross-…

8个迹象表明你需要一台新笔记本电脑,看一下你的笔记本是否有其中一个

序言 当你第一次打开你的笔记本电脑的盒子时,它会以最高性能运行,电池寿命更长,过热最小,资源使用效率高。然而,随着笔记本电脑的老化,它将不能满足预期用途。以下几个迹象表明,可能是时候寻找并投资一款新设备了。 你的设备不再具有预期用途 如果你的笔记本电脑不再…

Java内存模式以及volatile关键字的使用

1.Java内存模型 &#xff08;1&#xff09;Java 内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM&#xff09;&#xff0c;它是一个抽象的概念&#xff0c;JMM是和多线程相关的&#xff0c;它是一组规范&#xff0c;描述了一组规则&#xff0c;定义了多线程对共享…

“图生视频”技术创新:剪贴画秒变动画生成的实验验证与分析

在最近的研究进展中&#xff0c;AniClipart系统的问世标志着文本到视频生成技术的一个重要里程碑。这一系统由香港城市大学和莫纳什大学的研究者们共同开发&#xff0c;旨在解决将静态剪贴画图像根据文本提示自动转换成动画序列的挑战。传统的动画制作流程繁琐且耗时&#xff0…

2024中国(重庆)商旅文化川渝美食暨消费品博览会8月举办

2024中国(重庆)商旅文化川渝美食暨消费品博览会8月举办 邀请函 主办单位&#xff1a; 中国航空学会 重庆市南岸区人民政府 招商执行单位&#xff1a; 重庆港华展览有限公司 展会背景&#xff1a; 2024中国航空科普大会暨第八届全国青少年无人机大赛在重庆举办&#xff…

用友GRP-U8 bx_dj_check.jsp SQL注入漏洞复现(XVE-2024-10537)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

NSSCTF | [SWPUCTF 2021 新生赛]babyrce

打开题目&#xff0c;显示了一个php脚本 我们来分析一下这个脚本是什么意思 <?php error_reporting(0); header("Content-Type:text/html;charsetutf-8"); highlight_file(__FILE__); if($_COOKIE[admin]1) {include "../next.php"; } elseecho &quo…

传统FTP弊端显现 国产ftp要如何选择?

FTP&#xff08;File Transfer Protocol&#xff09;是一个用于在网络上的计算机之间传输文件的协议。它属于网络协议组的应用层&#xff0c;主要用于文件的上传、下载和文件管理操作&#xff0c;是一种比较通用、操作也比较简单的传输方式。不过随着国产化大浪潮的推进&#x…

【线性系统理论】笔记三

能控性判别 约当标准型 总结&#xff1a; 秩的判据 能观性判别 秩判据 能控Ⅰ型&能控Ⅱ型 1型 2型 能控性分解&能观型分解

vue+element 验证输入框是否包含特殊字符(赠送ip+域名双验证判断)

1 效果: 2 添加element自定义验证方法 rules{ dbConfig.address: [ { required: true, validator: validatehost_ip, trigger: blur } ] } 3 添加对应方法 var validatehost_ip (rule, value, callback) > {if (!value) {callback(new Error(地址不可为空))} else {//验…

OpenFeign替代品:Spring6 新增的http exchange 如何设置拦截器

前言 OpenFeign已经被认为是功能完备了&#xff0c;后续不再更新新功能&#xff0c;新出来的 http exchange 可以实现类似的功能。 在使用Openfeign的时候&#xff0c;我们通常会使用它的拦截器来实现认证token的填写等统一处理&#xff0c;那么&#xff0c;在使用Http exchan…

MY SQL 实验四:

一、实验目的 通过该实验掌握较复杂的SQL 查询数据库方法&#xff0c;包括嵌套查询&#xff0c;相关与不相关子查询&#xff0c;连接的多种方法等。 二、实验原理 数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询。 SELECT[ALL|DISTINCT]<目标列表达…

enable_shared_from_this 实现原理

前言 enable_shared_from_this 可以帮助我们用 this 指针安全地创建 shared_ptr。 enable_shared_from_this 假设我们的程序使用 shared_ptr 管理 Widget 对象&#xff0c;我们用一个 vector 来记录已经处理过的 Widget 对象&#xff1a; std::vector<std::shared_ptr&l…

OSError: [WinError 1455] 页面文件太小,无法完成操作 的问题

实质问题是报错&#xff1a;caffe2_detectron_ops.dll“ or one of its dependencies 还需要安装一个包&#xff1a; pip install intel-openmp 安装之后顺利测试通过。