
JavaScript
文章平均质量分 60
大大大石頭
各种小白,记录点滴,慢慢学习
展开
-
在vue里取消axios的请求
一、搬砖遇到的问题在搬砖的时候,遇到了一个问题,公共组件A是需要传一个数组进去渲染,在tab1下面是需要从接口请求返回的数据渲染,在tab2下则是读取配置文件的内容。在网络比较慢的情况下,快速从tab2切换到tab1再切换回tab2的时候,会先渲染tab2从配置文件中读取数组,然后再渲染成tab1请求回来的数据列表,然后就不再变化了。二、如此就需要在切换到tab2之前,把tab1的请求给取消了。三、具体的方法:取消单个请求的方法,可以像下面的方法,把CancelToken的source放在data里原创 2021-10-24 21:41:57 · 4389 阅读 · 1 评论 -
Promises/A+ 规范
一个开放的,可交互的由开发者制定的 JavaScript Promise 标准。一个 Promise 代表一个异步操作的最终结果。与 Promise 交互的主要方式是通过它的 then 方法,该 then 方法注册了两个回调函数,用来接收 Promise 的最终结果或者导致 Promise 不能 fulfilled(已完成) 的原因。本规范详细的列出 then 方法的行为,为所有符合 Promises/A+ 规范的 Promise 提供了一个可互操作的基础来定义 then 方法。因此本规范是稳定的。尽管原创 2021-08-31 13:57:50 · 406 阅读 · 0 评论 -
关于深拷贝
深拷贝,平常在用的时候,都会用JSON的方法const deepcloneObj = JSON.parse(JSON.stringify(obj));这个方法也存在很多的问题,拷贝的对象的值中如果有函数、undefined、symbol 这几种类型,经过 JSON.stringify 序列化之后的字符串中这个键值对会消失;拷贝 Date 引用类型会变成字符串;无法拷贝不可枚举的属性;无法拷贝对象的原型链;拷贝 RegExp 引用类型会变成空对象;对象中含有 NaN、Infinity 以及原创 2021-01-19 10:40:11 · 212 阅读 · 0 评论 -
自定义迭代器方法
写一个迭代器的类迭代一个数组或者字符串,考虑要有next()方法,要有[Symbol.iterator]属性等。class demoIterator { constructor(param) { this.count = 0; this.arr = param; this.limit = param.length; } next() { if (this.count <= this.limit) { return { done: false, value: this.pa原创 2020-11-03 10:34:05 · 342 阅读 · 0 评论 -
new 操作符具体干了什么
一、定义new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一在创建一个新的实例的时候,必须使用 new 操作符。而使用 new 操作符会经历以下 4 个步骤:创建一个新对象将构造函数的作用域赋值给新对象(this 指向新对象)执行构造函数中的代码(给新对象添加熟悉)返回新对象二、模拟 new 操作符的方法:new 实现了什么功能:访问到了构造函数里的属性访问到了构造函数 prototype 里的属性我们定义一个 mockNew 来模拟一下 new原创 2020-08-16 23:09:14 · 5984 阅读 · 0 评论 -
import和require的区别
关于 import 和 require 的不同,其实可以理解成 CommonJs 和 ES Module 的区别。这两者都是前端模块化的规范。我们在 node 里使用的是 CommonJs,在前端页面的时候,用的是 ES Module,这两者的区别,还是很容易混淆的,所以整理一下 CommonJs 和 ES Moudule 的相关知识点,把这里好好的整理一下。一、CommonJs1.1 概述Nodejs 是 CommonJS 规范的主要实践者,在 CommonJs 里每个文件就是一个模块,有自己的作原创 2020-07-03 14:02:15 · 735 阅读 · 0 评论 -
变量的作用域和变量提升
京东面试题,面试官小姐姐给出了一道题:var a = 100;function test(){ console.log(a); a = 10; console.log(a); console.log(this.a); var a;}test();问我这三个会打印出来的值是什么?好吧我这个还以为是要考我闭包的问题,后来一想是个变量提升的问...原创 2017-08-23 17:14:17 · 1482 阅读 · 0 评论 -
一些JS小技巧
整理一些自己遇到的 js 小技巧,希望以后能变成一个炫技派,哈哈哈~1、对象深拷贝的小方法JSON.parse(JSON.stringify(obj));2、数组去重const deleteSame = array => [...new Set(array)];3、用Object.is(a, b) 代替 ===if (Object.is(a, b)) {...原创 2018-08-26 23:06:39 · 456 阅读 · 0 评论 -
axios jquery.ajax fetch 区别
最近项目在用 axios,好像出现好久了,才开始学习。这三个都是发起 http 请求的东西,都算是对原生 XHR 的封装。从 XHR -> Jquery ajax() -> fetch -> axios 现在来分别看一下这三个东西Jquery ajax 它是对原生 XHR 的封装,支持 JsonP,是 MVC 编程的一种请求方式,已经逐渐的不适应前端的 MVVM 框...原创 2018-08-19 21:24:54 · 504 阅读 · 0 评论 -
js 深浅拷贝
还是京东的面试: 小姐姐问了一个深浅拷贝的问题,然鹅我不会。。 只能回来填坑了。。 整理一下:js有基本类型和引用类型,当把对象赋给另一个对象的时候,修改被复制的对象的属性时,赋值的对象的属性也会被修改,这是因为对象存储的都是一块内存地址,也就是指向的都是同一内存,故修改时都会发生修改浅复制:只会将对象的各个属性进行依次复制,并不会进行递归复制,而js存储对象都是存地址的,所以会导致引...原创 2017-08-23 17:43:24 · 489 阅读 · 0 评论 -
ES6的十个新特性
ES6中的十个特性(无特定顺序):1.默认参数 2.模版表达式 3.多行字符串 4.拆包表达式 5.改进的对象表达式 6.箭头函数 =&> 7.Promise 8.块级作用域的let和const 9.类 10..模块化转载 2017-08-01 00:01:08 · 1337 阅读 · 0 评论 -
Javascript原型学习
prototype是函数才有的一个属性。函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型。原型可以理解成:每一个 JS 对象(null 除外),在创建的时候,就会与之关联另一个对象,这个对象就是我们说的原型。每个对象都会从原型继承属性。每一个 JS 对象(null 除外)都有一个_proto_的属性,该属性指向该对象的原型。每...原创 2018-10-09 11:41:29 · 163 阅读 · 0 评论 -
ajax实现
Q1: 何谓ajax,它有何优点? A1:AJAX = 异步 JavaScript 和 XML。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据 交换,AJAX 可以使网页实现异步更新Q2:ajax 如何实现? A2: 步骤:(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象. (2)创建一个新的HTTP请求,并指定该HT...原创 2018-06-11 13:49:09 · 134 阅读 · 0 评论 -
javascript 继承理解
javascript的继承方式有好多方式,之前ES5通过原型链继承,ES6中引入了Class,javascript可以像java一样使用extends关键字继承。现在整理一下js中的继承方式。ES5中的继承方式一、构造函数的继承现在有一个”动物”对象的构造函数function Animal(){ this.species = "动物";}还有一个”猫”对象的构造函数。...原创 2018-05-08 11:22:56 · 275 阅读 · 0 评论 -
Event Loop 问题研究
Q1:事件循环机制是什么? A1:JavaScript 是典型的单线程单并发语言,即表示在同一时间内其只能执行单个任务,同域浏览器中 JavaScript 主线程拥有一个函数调用栈(主线程)以及多个任务队列。Q2:什么是任务? A2:任务分为两种,一种是同步任务,一种是异步任务。 同步任务,就是主线程中排队执行的任务; 异步任务,不先进入主线程,而是先进入“任务...原创 2018-05-08 10:23:38 · 195 阅读 · 0 评论 -
对象字面量声明和构造函数声明的比较
去某家面试的时候,在笔试的时候,看到了这个问题,回来研究一下。 JS 中有很多种对象的声明方式,一般我用到的也就是这两种,通过字面量来声明对象和通过构造函数来声明对象。用字面量来声明对象我们可以直接在创建对象的时候添加功能let person = { name: 'paji', age: 18, sex: 'male', speak: function() {...原创 2018-06-21 00:26:09 · 788 阅读 · 0 评论 -
JS包装对象
Q1: 什么是包装对象? A1: JS 的数值,布尔,字符串类型的变量,在一定条件下,也可以自动变成对象,这就是原始类型的包装对象。let a = new Number(-1);let b = new Boolean(true);let c = new String('hello world');Q2: 包装对象和同样的原始类型的值相等么,这么做有什么目的? A2: 不想等。包...原创 2018-06-25 11:14:12 · 309 阅读 · 0 评论 -
对象字面量声明和构造函数声明的比较
去某家面试的时候,在笔试的时候,看到了这个问题,回来研究一下。JS 中有很多种对象的声明方式,一般我用到的也就是这两种,通过字面量来声明对象和通过构造函数来声明对象。用字面量来声明对象我们可以直接在创建对象的时候添加功能let person = { name: 'paji', age: 18, sex: 'male', speak: function() { con...原创 2018-10-22 11:26:14 · 256 阅读 · 0 评论 -
for 循环作用域的探究
之前看到这么一个题,问最后输出什么?for (let i = (setTimeout(() => console.log(i), 2333), 0); i < 2; i++) {}答案是在 2333ms 之后,输出了 0。一直在想什么原因。今天闲着没事重新在看阮一峰 es6 入门,然后想起来这个问题。es6 入门的 let 和 const 的那一章里,他说了一个问题:for...原创 2018-10-22 11:18:04 · 852 阅读 · 0 评论