javascript
from_the_star
sorry,本人回复消息不及时,因工作繁忙很少上线。
展开
-
ECAMScript 中的Set语义和Define语义
ECAMScript 中的类字段(class field)在stage-2的时候使用的是[[Set]] 语义,而在stage-3改成了 [[Define]] 语义。从Babel转译来看,就是将直接定义在 this上的方法和属性换成使用 Object.defineProperty。其实对于展开语法(Spread syntax) 处理也是这样的,有[[Set]] 语义和 [[Define]] 语义的区别。举个例子Define语义会导致有时候的setter、getter失效。原始代码class Bas原创 2022-04-27 17:17:00 · 406 阅读 · 0 评论 -
JS沙盒实现
JS沙盒简述沙盒(英语:sandbox,又译为沙箱),计算机术语,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。沙盒通常严格控制其中的程序所能访问的资源,比如,沙盒可以提供用后即回收的磁盘及内存空间。在沙盒中,网络访问、对真实系统的访问、对输入设备的读取通常被禁止或是严格限制。从这个角度来说,沙盒属于虚拟化的一种。沙盒中的所有改动对操作系统不会造成任何损失。通常,这种技术被计算机技术人员广泛用于测试可能带毒的程原创 2021-08-10 00:50:58 · 1638 阅读 · 0 评论 -
异步函数(async/await)的原理
Generator了解一个异步函数的原理,首先要来看下Generator(具体内容去看文档):function* fibonacci() { try{ var a = yield 1; yield a * 2; }catch(err){ console.log(err.message); }}var it = fibonacci(); it.next(); // {value: 1, done: false}it.next原创 2020-07-28 17:12:39 · 791 阅读 · 0 评论 -
前端笔试坑位---JS隐式转换
我们在写笔试题的时候,经常碰到涉及隐式转换的题目,例如"1" + 2obj + 1[] == ![] [null] == false=== 和 ===== 叫做严格运算符,对象类型指向地址相同或原始类型( 数值、字符串、布尔值)值相同;==叫做相等运算符,类型不同会进行转化再比较,undefined、null相等,对象类型还是比较引用。==运算符将原始值和其包装对象视为相等,但===运算符将它们视为不等。所有obj.a==null(相当于obj.a=== null || obj.a ==原创 2020-06-13 15:33:01 · 491 阅读 · 0 评论 -
100行以内的代码实现一个Promise
Promise实现的基石就是,先了解Promises/A+规范,我按照自己的理解简单描述下。Promise规范术语:解决(fulfill):指一个 promise 成功时进行的一系列操作,如状态的改变、回调的执行。虽然规范中用 fulfill 来表示解决,但在后世的 promise 实现多以 resolve 来指代之。拒绝(reject):指一个 promise 失败时进行的一系列操作。终值(eventual value):所谓终值,指的是 promise 被解决时传递给解决回调的值,由于 pr原创 2020-06-01 21:03:14 · 466 阅读 · 0 评论 -
为什么需要知道JavaScript的Number类型的精度问题
JavaScript的Number类型在我们平时写脚本的时候随处可见,但是因为前端对精度的要求不高,虽然不常见,但是有时也会碰到0.1+0.2!=0.3的情况,如果你不了解Number,可能就需要浪费很久事件去找bug。什么你没遇见过,不敢兴趣,了解下呗,防患于未然(虽然DUCK不必),面试会问到啊,看嘛,我讲快点(╥╯^╰╥)Number类型在js里,它是个双精度浮点数,用二进制来表示,就是...原创 2020-03-24 13:49:50 · 1876 阅读 · 0 评论 -
es6模块报错Uncaught ReferenceError: Cannot access '.' before initialization
情况描述项目是使用typescript(js的超集)编写代码的默认使用webpack编译采用es6模块处理方案出现了以下错误以下是我写的测试类A.tsimport { B } from "./B";export class A { public static _instance: A; public static getInstance(): A { i...原创 2019-12-09 09:42:32 · 39735 阅读 · 0 评论 -
angular拦截器的使用(缓存)
什么是拦截器回归今天的主题, 我建议大家主要是去看官方文档的拦截请求和响应,跳到顶部,可以下载官方例子源码的。拦截器就是在发送请求给服务器之前,拦截请求,隐式进行处理。也可以在接受服务器的响应之后,拦截响应,隐式进行处理。简单的应用就像官方说的,记日志,缓存等等,我也用其...原创 2019-11-30 16:00:07 · 506 阅读 · 0 评论 -
JS下载文件的三种方法
因为公司后端忙得无法给批量下载的api,就我们前端自己把多张图片打包成zip下载,zip打包我们用的是jszip,下面是js实现下载的三种方法:利用HTML download 属性 var a = document.createElement('a'); //需要下载的数据内容,我这里放的就是BLOB,如果你有下载链接就不需要了 var url = wi...原创 2019-01-11 17:57:25 · 28804 阅读 · 0 评论 -
JavaScript图片数据转换
JavaScript图片数据转换以下代码使用TypeScript书写,小幅度修改即可JavaScript使用图片转换成BlobBlob public saveToBlob(imgDom:HTMLImageElement):Blob{ let canvas:HTMLCanvasElement = document.createElement('canvas'); ...原创 2018-11-05 15:25:49 · 1761 阅读 · 0 评论 -
复制Dom元素
function copyAttributes (from, to, opts) { var attr, _i, _len, _ref, _ref1, _results; if(!Array.isArray(opts)){ console.error("copyAttributes的第三个参数必须为数组") opt...原创 2018-10-27 14:15:00 · 1064 阅读 · 0 评论 -
JavaScript可变长数组
var array = []array[array.length] = 'dsa'for(var i = 0; i < 5;i ++){ array[array.length] = '我在增长'}原创 2017-11-13 22:18:23 · 5440 阅读 · 0 评论