随笔分类 - JavaScript
1
摘要:谈谈对 async/await 的理解,async/await 的实现原理是什么?1)async/await 就是 Generator 的语法糖,使得异步操作变得更加方便2)async 函数就是将 Generator 函数的星号(*)替换成 async,将 yield 替换成await3)async
阅读全文
摘要:Promise.resolve(value)方法返回一个以给定值解析后的Promise 对象。如果这个值是一个 promise ,那么将返回这个 promise ;如果这个值是thenable(即带有"then" 方法),返回的promise会“跟随”这个thenable的对象,采用它的最终状态;否
阅读全文
摘要:generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。 generator和函数不同的是,generator由function*定义(注意多出的*号),并且,除了return语句,还可以用yield返回多次。 // 生成器可以暂停函数的运
阅读全文
摘要:1.数组和字符串的迭代器iterator const arr = [1, 2, 3, 4]; const str = "hello"; function myIterator(arr) { let index = 0; return { next() { if (index < arr.length
阅读全文
摘要:了解原型和原型链了解this绑定1 new 运算符简介MDN文档:new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。 class Person { constructor(name) { this.name = name; } } // 创建自定义对象类型的实例 cons
阅读全文
摘要:1. const promise = new Promise((resolve, reject) => { console.log(1); resolve(); console.log(2); }) promise.then(() => { console.log(3); }) console.lo
阅读全文
摘要:1.私有属性 面向对象中在类内部才能访问的属性成为私有属性。js的类中属性前面#表示是私有属性。在类的外部无法访问。 class Person{ // 共有属性 name; // 私有属性 #age; #weight; // 构造方法 constructor(name, age, weight){
阅读全文
摘要:1.对象的扩展方法 Object.fromEntries 接收二维数组或者Map转化为对象 ES8 Object.entries可以将对象转化为二维数组 这两个方法算是逆运算 // 二维数组 const res = Object.fromEntries([ ['name','字节跳动'], ['jo
阅读全文
摘要:rest参数与spread扩展运算符已经在ES6中引入,但是ES6没有提供对象的实现 ES9中为对象提供了像数组一样的rest参数和扩展运算符 function connect({host, port, ...user}){ console.log(host);//127.0.0.1 console
阅读全文
摘要:1.Object.values()方法返回一个给定对象的所有可枚举属性值的数组 2. Object.entries()方法返回一个给定对象自身可比案例属性[key,value]的数组 3.Object.getOwnPropertyDescriptions()方法返回指定对象所有自身属性的描述对象 /
阅读全文
摘要:1.async函数 async函数的返回值是promise对象 promise对象的结果由async函数执行的返回值决定 async function fn(){ //返回字符串 // return 'yuanyuan'; //如果返回的不是Promise对象,那么返回的就是一个成功的Promise
阅读全文
摘要:1.Array.prototype.includes 用来判断数组是否含有某个元素 // Array.prototype.includes const mingzhu = ["西游记","红楼梦","三国演义","水浒传"]; //判断 console.log(mingzhu.includes('西
阅读全文
摘要:1. Object.is 判断两个值是否完全相等 console.log(Object.is(120,120));//true console.log(Object.is(120.121));//false console.log(Object.is(NaN,NaN));//true console
阅读全文
摘要:1.Number.EPSILON Number.EPSILON 是JavaScript表示的最小精度 EPSILON属性的值接近于 2.2204460492503130808472633361816E-16 他可以用来忽略掉浮点数的精度误差 例如我们都知道JavaScript中 0.1 + 0.2
阅读全文
摘要:es5构造函数继承 function Phone(brand, price){ this.brand = brand; this.price = price; } Phone.prototype.call = function(){ console.log("打电话"); } function Sm
阅读全文
摘要:简单来说静态成员就是类的属性而不是实例对象的属性 class Phone{ //静态属性 static name = "手机"; static call(){ console.log("打电话"); } } let Huawei = new Phone(); console.log((Huawei.
阅读全文
摘要:1.数组去重 let arr = [1,2,3,4,5,4,3,2,1], arr2 = [4,5,6,5,6]; // 1.数组去重 let res = [...new Set(arr)]; console.log(res); 2.交集 // 2.交集 let res = [...new Set(
阅读全文
摘要:js异步编程学习生成器很好的例子用生成器不写成回调地狱的形式 例1.用生成器实现一个1s后控制台输出111,再2s后控制台输出222,再3s后控制台输出333 function one(){ setTimeout(()=>{ console.log(111); iterator.next(); },
阅读全文
摘要:var关键字 var声明作用域 var变量提升 let声明 let声明的范围是块作用域,而var声明的范围是函数作用域 暂时性死区 let声明的变量不会在作用域中被提升 全局声明 var声明的变量会变成window对象的属性,而let不会 条件声明 let不能依赖条件声明模式 for循环中的let声
阅读全文
1
浙公网安备 33010602011771号