javascript中parseFloat(x)、parseInt(num,radix)、Promise、ReferenceError、Reflect、get和set

parseFloat(x)对象:

将传入的字符转化为浮点数,若传入的字符不能被转化为数字型,则返回NaN

	<script>console.log(parseFloat(0.0314E+2)); //3.14</script>

parseInt(num,radix)对象:

将num看成radix某进制的数后转化为十进制整数,radix的取值范围为2-36

	<script>console.log(parseInt(0.0314E+2)); //3console.log(parseInt(123, 16)); //291</script>

Promise对象:

为了解决回调地狱问题带来的代码不好维护问题,可以使用promise对象解决这个问题,promise有三种状态:pending异步操作未完成、resolved异步操作已完成、rejected异步操作失败,从开始到结束三种状态之间有两种模式,这两种模式分别是promise中传入回调函数中的第一个参数和第二个参数;

	var fs = require('fs');// 1.创建promise容器:一旦创建这个容器就会执行里面的代码new Promise(function(resolve,rejecte){fs.readFile('./data/c.txt', 'utf8', function (err, data) {if (err) {rejecte(err)}else{resolve(data)};});//2.在容器中放一个函数并在其中执行异步操作});var p1 = new Promise(function (resolve, reject) {fs.readFile('./data/a.txt', 'utf8', function (err, data) {if (err) {reject(err)} else {resolve(data)}})})var p2 = new Promise(function (resolve, reject) {fs.readFile('./data/b.txt', 'utf8', function (err, data) {if (err) {reject(err)} else {resolve(data)}})})var p3 = new Promise(function (resolve, reject) {fs.readFile('./data/c.txt', 'utf8', function (err, data) {if (err) {reject(err)} else {resolve(data)}})})p1.then(function (data) {console.log(data)// 当 p1 读取成功的时候// 当前函数中 return 的结果就可以在后面的 then 中 function 接收到// 当你 return 123 后面就接收到 123//      return 'hello' 后面就接收到 'hello'//      没有 return 后面收到的就是 undefined// 上面那些 return 的数据没什么卵用// 真正有用的是:我们可以 return 一个 Promise 对象// 当 return 一个 Promise 对象的时候,后续的 then 中的 方法的第一个参数会作为 p2 的 resolve// return p2}, function (err) {console.log('读取文件失败了', err)}).then(function (data) {console.log(data)return p3}).then(function (data) {console.log(data)console.log('end')})

其相关属性和方法如下:

属性或方法描述案例
Promise.all()方法将多个promise实例包装成一个promise实例,all中可以接收一个数组作为参数(这个参数可以不是数组,但是必须是lterator接口,即可迭代对象),数组中的每一项都是一个promise的对象实例,对象实例的执行结果将以一个数组的形式展现出来var arr = [1, 2];var obj = {str: ‘hello’};var num = 8;Promise.all([arr, obj, num]).then(function(e) {console.log(e);}); //[Array(2), {…}, 8]
Promise.allSettled(promises)方法将一个在所有给定的promise都已经fulfilled或rejected后的promise参数(参数也是 iterable型),用一个带有对象的数组返回var arr = [1, 2];var obj = {str: ‘hello’};var num = 8;Promise.allSettled([arr, obj, num]).then(function(e) {console.log(e);}); //[{…}, {…}, {…}]—0: {status: “fulfilled”, value: Array(2)}
Promise.any(iterable)方法传入一个可迭代的promise对象,只要其中一个promise是成功的,就返回这个成功的promise,若迭代对象中没有一个成功的promise对象,则返回一个失败的promise对象, 和AggregateError类型的实例,它是Error的一个子类,用于把单一的错误集合起来,本质上和Promise.all()是相反的var arr = [1, 2];var obj = {str: ‘hello’};var num = 8;Promise.any([arr, obj, num]).then(function(e) {console.log(e);}); //[1, 2]
promise.catch()方法返回一个promise,并且处理拒绝的情况(catch方法中传入一个函数,函数中传入一个参数用于接收promise失败的原因,并对它进行处理),只有当promise失败的时候才调用此方法var p1 = new Promise(function(resolve, reject) {fs.readFile(’./data/c.txt’, ‘utf8’, function(resolv, reject) {if (resolv) {rejecte(resolv);} else {resolve(reject);};});});p1.then(function(value) {console.log(value);}).catch(function(e) {console.log(e);}); //fs is not defined,调用catch方法并打印了e
promise.finally()方法返回一个promise,在promise结束时,无论结果是fulfilled或rejected都会执行指定的回调函数,它可以不用分情况解决问题var promise = new Promise(function(resolve, reject) {window.setTimeout(function() {if (false) {resolve(‘huangbiao’);} else {debuggerreject(‘error’);};}, 1000)}).then(function() {console.log(‘success’);}).catch(function() {console.log(‘catch’);}).finally(function() {console.log(‘finally’);});//[Violation] ‘setTimeout’ handler took 218231ms
Promise.race(iterable)方法迭代中某个对象的状态发生改变,则发生改变的这个对象就会被返回,这个被返回的值用回调函数接收Promise.race([‘promise1’, ‘promise2’]).then((value) => {console.log(value);}); //promise1
Promise.reject()方法当promise的状态成 rejected时,会调用 rejected状态的回调函数,回调函数中的参数就是 rejected状态时的理由var p = new Promise(function(resolve, reject) {reject(‘出错了’);});p.then(null, function(s) {console.log(s);});//出错了,等同于 var p = Promise.reject(‘出错了’);
Promise.resolve()方法调用时不带参数,直接返回一个resolved状态的 Promise 对象var promise1 = Promise.resolve(123);promise1.then((value) => {console.log(value);});//123
Promise.then()方法它最多有两个参数,分别是promise的成功和失败的回调函数,当异步操作完成,然后执行callback函数var promise1 = new Promise((resolve, reject) => {resolve(‘Success!’);});promise1.then(value => {console.log(value);}, reason => {console.error(reason);});

RangeError范围报错:

RangeError当一个值不在其所允许的范围或者集合中时报错,其实例对象需要new RangeError(a,b,c);可以接收三个可选参数,第一个参数是用来描述错误的信息,第二个参数是说明造成错误的文件名,第三个参数指报错的行数,如:

<script>var err = new RangeError('no find!', 'index.html', '10');if (true) throw err;//控制台报错: Uncaught RangeError: no find!  at test.html:18
</script>

ReferenceError引用错误:

ReferenceError一个不存在的变量被引用是报错,同样通过new创建实例化对象,同样可传入三个可选参数,1错误描述,2错误的文件,3错误行数,如:

	<script>try {throw new ReferenceError('Hello', 'someFile.js', 10);} catch (e) {console.log(e instanceof ReferenceError); // trueconsole.log(e.message); // "Hello"console.log(e.name); // "ReferenceError"console.log(e.fileName); // undefinedconsole.log(e.lineNumber); // undefinedconsole.log(e.columnNumber); //undefinedconsole.log(e.stack); // "@Scratchpad/2:2:9\n"}</script>

Reflect拦截javascript操作的方法:
Reflect是一个静态的对象,不需要通过new创建的对象,它支持很多实用静态的方法,如下表:

方法描述案例
Reflect.apply(a,b,c)可传入三个参数,第一个表示被apply请求的方法,第二个参数表示这个被请求方法的使用对象,第三个参数表示这个方法中传入的参数,如: Reflect.apply(console.log, undefined, [1, 2]); //1 2var res = Reflect.apply(new String().charAt, ‘ponies’, [2]);console.log(res); //n
Reflect.construct(a,…b)对构造函数实例化,相当于new操作,第一参数是构造函数,第二个参数接收一个数组,数组元素均为函数的参数function Person(name, age) {this.name = name;this.age = age;};var per = Reflect.construct(Person, [‘jack’, ‘18’]);console.log(per.name + ‘—’ + per.age); //jack—18
Reflect.defineProperty(a,b,c)给对象a添加一个属性b,b属性的属性值是{value:c},其本身返回一个布尔值var obj = {};var bool = Reflect.defineProperty(obj, ‘name’, {value: ‘jack’});console.log(obj.name + ‘—’ + bool);//jack—true
Reflect.deleteProperty(a,b)删除数组索引为b的元素或对象的b属性,本身返回一个布尔值var obj = {name: ‘jack’};var bool = Reflect.deleteProperty(obj, ‘name’);var arr = [1, 2, 3];var boolear = Reflect.deleteProperty(arr, 1);console.log(obj + ‘:’ + bool + ‘—’ + arr + ‘:’ + boolear); //{}:true—1,3:true
Reflect.get(a,b)获取a对象b属性的值或a数组索引b的元素,并返回这个值var obj = {name: ‘jack’};var bool = Reflect.get(obj, ‘name’);var arr = [1, 2, 3];var boolear = Reflect.get(arr, 1);console.log(bool + ‘—’ + boolear); //jack—2
Reflect. getOwnPropertyDescriptor(a,b)判断对象a中是否有属性b,有则返回属性的描述,无则返回undefinedvar obj = {‘age’: 18};var result = Reflect.getOwnPropertyDescriptor(obj, ‘age’);console.log(result);//{value: 18, writable: true, enumerable: true, configurable: true}
Reflect.has(a,b)判断a对象中是否有属性b,若有则返回true,否则返回falsevar obj = {‘age’: 18};var result = Reflect.has(obj, ‘age’);console.log(result); //true
Reflect.isExtensible(a)判断一个对象a是否可以添加新属性,返回布尔值var obj = {‘age’: 18};var result = Reflect.isExtensible(obj);console.log(result); //true
Reflect.ownKeys(a)里面传入一个数组或对象,以数组的形式返回一个这个对象的键或这个数组的所有元素,数组的最后多了length项const object1 = {age: 18,name: ‘jack’};var resultObj = Reflect.ownKeys(object1);const array1 = [1, ‘2’, 3, ‘4’];var resultArr = Reflect.ownKeys(array1); console.log(resultObj); console.log(resultArr); // [“age”, “name”][“0”, “1”, “2”, “3”, “length”],注意,这里数组最后多了个length
Reflect.preventExtensions(a)禁止向添加此方法的对象a后面添加新属性或方法const object1 = {};object1.height = 170;Reflect.preventExtensions(object1);object1.weight = 20;console.log(object1.height); console.log(object1.weight); //170 undefined,被添加此方法后,此方法后面将不能在给对象添加属性或方法了
Reflect.set(a,b,c)给数组添加元素或对象添加属性和方法,本身返回布尔值,第一个参数表示被添加的目标对象,第二个参数表示属性或索引,在数组中给某索引的元素添加新值,可以覆盖之前的值,第三个参数表示添加属性或元素的值var obj = {};var objResult = Reflect.set(obj, “name”, “jack”);console.log(objResult);console.log(obj);var arr = [“1”, 2, “3”];var arrResult = Reflect.set(arr, arr.length, “s”);console.log(arrResult);console.log(arr);//true {name: “jack”} true [“1”, 2, “3”, “s”]
Reflect.setPrototypeOf(a,b)改变a对象的原型指向为b.prototype,并返回一个布尔值var obj = {};var bool = Reflect.setPrototypeOf(obj, Array.prototype);console.log(obj);console.log(bool) //Array {} true

Proxy 对象:

用于创建一个对象的代理,从而实现基本操作的拦截和自定义,语法:let p = new Proxy(target,handler);target指的是要代理的object或者function;handler指的是对代理对象进行各种操作行为处理

	<script>let test = {name: "小红"};testRes = new Proxy(test, {get(target, key) {console.log('获取了getter属性'); //获取了getter属性return target[key];}});console.log(testRes.name); //小红</script>

get和set:

get指得到对象的某个属性的值的方法,set指设置对象的某个属性的值的方法,如:

	<script>var o = {a: 7,get b() {return this.a + 1;},set c(x) {this.a = x / 2}};console.log(o.b); // 8o.c = 50;console.log(o.a); // 25</script>

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者 删除。
笔者:苦海

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

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

相关文章

Linux系统isosize指令用法

isosize命令&#xff1a;iso9660文件系统大小显示 isosize命令用于显示iso9660文件系统的大小&#xff0c;还文件可以使普通文件&#xff0c;也可以是块设备&#xff0c;如/dev/sr0或者/dev/sda.如果没有相关选项的规定&#xff0c;默认以字节的方式显示大小。该命令支持大于4G…

web api、获取DOM元素的方式、事件理解、click事件在移动端300ms延时、事件对象、事件委托、常见事件类型

web api: API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;无需理解其内部工作机…

Reset RequiredFieldValidator 重置 验证控件

<td style"width:100px;">姓名<span class"must_star">*</span></td> <td> <asp:TextBox ID"txtNAME" runat"server" MaxLength"60"></asp:TextBox> <asp:RequiredFi…

transitionend、change、classList、兼容代码、元素样式属性的操作、-Attribute自定义属性、阻止跳转、元素绑定相同事件、元素解绑事件、事件冒泡、事件三阶段

transitionend过渡监听事件&#xff1a; 过渡监听事件transitionend指的是CSS3中过渡效果执行一次后触发事件处理函数&#xff0c;如下案例&#xff1a; <!DOCTYPE html><html><head><meta charset"utf-8"><title></title><…

Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建

1. Kali linux是BT5的晋级版本&#xff0c;用于信息安全。基于Debian7内核。新建虚拟机。2. 选择默认虚拟机3. 选择稍后安装操作系统4.选择Linux Debian7 64位&#xff0c;因为KaliLinux基于Linux Debian7。5. 设置虚拟机名称为KaliLinux6.设置处理器为双核。7. 设置内存为2G8.…

javascript中节点操作、节点属性、节点获取、创建节点、删除节点、克隆节点

节点操作 节点操作实际是利用DOM树把节点划分为不同的层次关系&#xff0c;常见父子兄弟级关系 节点属性&#xff1a; 节点一般有三个属性&#xff1a;nodeType节点类型&#xff08;其中元素节点值为1&#xff0c;属性节点值为2&#xff0c;文本节点值为3&#xff09;、node…

OpenGl绘制螺旋线

/** * 缓冲区工具类 */public class BufferUtil { /** * 将浮点数组转换成字节缓冲区 */ public static ByteBuffer arr2ByteBuffer(float[] arr){ ByteBuffer ibb ByteBuffer.allocateDirect(arr.length * 4); ibb.order(ByteOrder.nativeOrder()); FloatBuffer fbb ib…

javascript中BOM介绍、屏幕尺寸、历史记录、URL解析、计算机信息获取、定时器、三大系列及兼容代码、封装动画函数、同步和异步

BOM介绍&#xff1a; BOM指的是浏览器对象模型&#xff0c;是用来操作浏览器的&#xff0c;例如浏览器弹窗、地址栏、滚动条等&#xff0c;浏览器顶级对象&#xff1a;window&#xff1b;页面中的所有内容都是属于window的&#xff0c;window可以省略&#xff1b;confirm(‘带…

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自&#xff1a;Mysql数据库优化技术之配置篇、索引篇 &#xff08; 必看 必看 &#xff09;(一)减少数据库访问对于可以静态化的页面&#xff0c;尽可能静态化对一个动态页面中可以静态的局部&#xff0c;采用静态化部分数据可以生成XML&#xff0c;或者文本文件形式保存使用…

javascript中本地储存、离线缓存、地理定位、网络状态

本地储存&#xff1a; 实际开发中某些内容是不需要放到服务器中&#xff0c;而是放到了浏览器中&#xff0c;需要的时候可以快速的访问&#xff0c;甚至页面刷新也可能不会丢失数据&#xff0c;容量较大&#xff1b;这里介绍两种数据存储方式&#xff1a;sessionStorage约5M大…

Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换、变体类型常用的函数)...

来源&#xff1a;http://blog.csdn.net/xiongmao000738/article/details/6863988 一、变体类型常用的函数介绍&#xff1a; Variant&#xff1a; 一种可以拥有各种数据类型&#xff1b; 也可以告诉目前存储的数据是什么类型(通过使用VarType函数)&#xff1b; 可以给相同的Var…

HTML 引用Css样式的四种方式

不才&#xff0c;只知道HTML引用CSS样式有四种方式&#xff0c;内部引用和外部引用各两种&#xff0c;因为老是忘记细节&#xff0c;记下了随时翻阅亦可方便如我般的初学者 内部引用方式1&#xff1a; 直接在标签内用 style 引用&#xff0c;如&#xff1a; <div class"…

javascript中实例对象和构造函数关系、原型语法、原型链、call实现继承、apply调用函数、bind拷贝函数、拷贝继承、class类、super、严格模式、高阶函数、闭包、递归、es6简介

实例对象和构造函数的关系及原型&#xff1a; 实例对象是通过构造函数创建出来的&#xff0c;实例对象的构造器constructor就是指向构造函数的&#xff1b;每个实例对象中的同一方法的指向是各不相同的&#xff0c;但是其属性值相同的属性可以相同&#xff0c;这样会造成内存浪…

phpstorm IDE编辑器使用手记

a.选项卡限制问题 突破打开的文件选项卡个数限制&#xff1a;默认安装后的phpstorm打开的文件个数是有限制的&#xff0c;默认是10个。也就是最多同时打开10个文件进行编辑。 超过10个就会自动关闭前面最先打开的文件。所以我们要修改设置&#xff1a;File > Setting 打开设…

移动web现状、viewport视口、二倍图、移动web开发主流方案、布局技术选型(流式布局、flex弹性布局、less+rem+媒体查询布局、混合布局、媒体查询、bootstrap)

移动端web现状&#xff1a; 移动端常见浏览器&#xff1a;UC浏览器&#xff0c;QQ浏览器&#xff0c;Opera浏览器&#xff0c;百度手机浏览器&#xff0c;360安全浏览器&#xff0c;谷歌浏览器&#xff0c;搜狗手机浏览器&#xff0c;猎豹浏览器及杂牌浏览器。移动端常见的浏览…

Centos 6.5(64bit)上安装Vertica single node

在Win8上使用虚拟机Virtualbox安装Centos6.5,想在上面安装vertica. 以下记录了我在安装的过程中遇到的问题与一些解决方案。 1.安装Centos的时候遇到了一个恼人的问题&#xff0c;即安装成功后第一次启动时会需要你配置一些用户信息&#xff0c;时区信息和Kdump信息。 我当时选…

less简介、less安装、编译、less语法之变量、嵌套、类混入、函数混入、运算、less文件导入

less基础&#xff1a; CSS是一门非程序语言&#xff0c;没有变量、函数、作用域等&#xff0c;此时使用rem单位就会出现图片等大量计算尺寸的问题&#xff0c;但是less可以轻松实现运算&#xff0c;它是CSS预处理语言&#xff0c;引入了变量、混入、函数等&#xff0c;常见的C…

Mysql数据库备份和按条件导出表数据

Mysql数据库备份和按条件导出表数据一、备份数据库# mysqldump -u root -p dbcurr>/home/20090219.sqlmysqldum为备份命令&#xff0c;-u用户&#xff0c;-p密码&#xff0c;dbcurr数据库名&#xff0c;>备份符&#xff0c;/home/20090219.sql存储数据文件的路径。www.2…

jQuery概述、优点、使用步骤、入口函数、jQuery对象和DOM对象之间的转换、层级选择器、属性选择器、筛选选择器、节点选择器

jQuery简介&#xff1a; jQuery是一个高效、精简并且功能丰富的javascript库&#xff0c;它提供的API简单易学&#xff0c;且兼容众多浏览器&#xff0c;极大地简化了javascript代码开发&#xff0c;包含内容&#xff1a;HTML 元素选取、HTML 元素操作、CSS 操作、HTML 事件函…

睡觉应该按时

最近又想奋起 &#xff0c;最天又是 12 点多睡的&#xff0c;结果呢&#xff0c;呵呵&#xff1f; 一个规律的认识&#xff0c;真是反反复复&#xff0c;希望养成一个好的习惯&#xff0c;而不是不能可持续发展的习惯转载于:https://www.cnblogs.com/51Tsinghua/p/3831444.html…