
JavaScript
文章平均质量分 70
JavaScript
weixin79893765432...
学而不思则罔,思而不学则殆。
展开
-
js 原型与原型链
一、原型所有引用类型都有一个 __proto__(隐式原型)属性,指向它构造函数的 prototype 属性。 所有函数都有一个 prototype(原型)属性,属性值是一个普通的对象。var a = [1,2,3];a.__proto__ === Array.prototype; // truefunction Func () {};var f = new Func();f.__proto__===Func.prototype; // truevar fn = function (原创 2020-11-14 09:52:49 · 533 阅读 · 1 评论 -
js 环境 & 作用域 & 作用域链 & 提升
目录一、执行环境1、什么是执行环境?2、执行环境分为两种(1)、全局执行环境(2)、函数执行环境二、作用域1、全局作用域2、局部作用域(1)、函数作用域(2)、ES6的块级作用域三、作用域链1、作用域链2、延长作用域链(了解)四、提升1、变量提升2、函数提升(1)、只有通过 “函数声明” 形式创建的函数,才能被提升。(2)...原创 2019-11-21 19:13:34 · 612 阅读 · 1 评论 -
js 事件
目录一、事件流1、事件冒泡2、事件捕获二、事件处理程序1、HTML 事件处理程序2、DOM0事件处理程序3、DOM2事件处理程序4、IE事件处理程序5、跨浏览器的事件处理程序三、事件对象1、DOM 中的事件对象2、IE中的事件对象3、跨浏览器的中的事件对象四、事件类型1、UI 事件2、焦点事件3、鼠标与滚轮事件4...原创 2020-03-05 22:54:36 · 837 阅读 · 1 评论 -
js DOM 与 BOM
目录前言一、节点(Node)1、Node类型(1)、Node类型的属性(3)、Node类型的方法2、Document类型(1)、Document类型的特征(2)、Document类型的属性(3)、Document类型的方法3、Element类型(1)、Element 类型的特征(2)、Element 类型的属性(3)、Element ...原创 2019-12-29 21:51:35 · 833 阅读 · 0 评论 -
js 引用类型
目录前言:引用类型包括哪些?一、Object类型1、Object实例的创建方式(1)、Object 构造函数法(2)、对象字面量表示法(广泛使用)2、对象字面量可以传递可选参数3、访问对象属性的两种方法(1)、点表示法(2)、方括号表示法4、如何将两个字符串以“key: value”的格式放进一个对象里?二、Array类型1、js数组的特点2、...原创 2019-11-22 22:41:30 · 2194 阅读 · 1 评论 -
JSX | TSX 教程
如果你需要将大量 HTML 代码移植到 JSX 语法,可以使用一款在线的免费的代码转换器工具。原创 2021-05-25 14:43:02 · 9211 阅读 · 0 评论 -
上传文件 & 下载文件
当你在点击下载文件之前能拿到文件的完整 url 地址时,可以直接采用文件地址的方式下载文件,否则就采用文件流的方式下载文件。原创 2022-07-28 17:38:56 · 600 阅读 · 0 评论 -
js 中的 Event Loop 以及 宏任务 与 微任务
Engine(执行引擎):编译并执行 JavaScript 代码,完成内存分配、垃圾回收等。Runtime(执行环境):为 JavaScript 提供一些对象或机制,使它能够与外界交互。在 JavaScript 运行的时候,JavaScript Engine 会创建和维护相应的堆(Heap)和栈(Stack),同时通过 JavaScript Runtime 提供的一系列 API(例如:setTimeout、XMLHttpRequest 等)来完成各种各样的任务。原创 2022-11-23 13:54:03 · 1153 阅读 · 0 评论 -
在 JS 中要尽量避免使用 delete 操作符
目录一、delete 操作符灵魂六问1、delete 的返回值是什么?2、delete 删除不存在的属性返回值是什么?3、delete 能不能删除原型上的属性?4、delete 能否删除变量?5、delete 删除数组某个数据,数组长度会不会变?6、哪些属性不能被 delete 删除?二、若不使用 delete ,该如何删除对象的属性?一、delete 操作符灵魂六问关于 delete 操作符的几个问题:delete 的返回值是什么?delete 删除不存在的属性返回值是什么?delete 能不原创 2022-03-13 17:44:47 · 3627 阅读 · 1 评论 -
import 和 require
目录一、JavaScript二、webpack1、require.context2、require.ensure一、JavaScriptJS 中的require 和 import 区别二、webpack1、require.contextwebpack 中 require 用于导入模块。在用 require 导入模块时会生成一个 context module(上下文模块)。它包含 目录下的所有模块 的引用,如果一个 request 符合正则表达式,就能 require 进来。该 context m原创 2021-09-03 10:51:31 · 475 阅读 · 0 评论 -
前端项目请求接口时返回的response是html文档怎们办?
前端项目请求接口时返回的response竟然是html,这是为什么呢?遇到这种情况,一般是域名不对。比如:正常请求这个接口需要用的是测试环境或者线上环境的域名,而你用的是localhost或者127.0.0.1,此时接口找不到资源就会返回当前项目的index.html文档了。那么有什么解决办法呢?第一种解法:配置 proxy,将本地域名代理到能够请求道资源的域名。我这边是本地起的 node 项目的提供的接口服务,该 node 项目的端口号是 3000。 "proxy": { "/api原创 2021-10-25 15:33:47 · 17701 阅读 · 0 评论 -
js 实现上拉加载和下拉刷新
一、js 实现上拉加载实现上拉加载的原理:监听滚动条滑到页面底部,然后就去做一次请求数据。window.onscroll = function () { const scrollH = document.documentElement.scrollHeight;// 文档的完整高度 const scrollT = document.documentElement.scrollTop || document.body.scrollTop; // 当前滚动条的垂直偏移 c原创 2021-09-26 19:55:45 · 7357 阅读 · 0 评论 -
URL 参数获取相关
将URL的参数(params)部分转为对象格式: const paramsList = window.location.search.slice(1).split('&'); const obj = {}; paramsList.length && paramsList.map(item => { const list = item.split("="); obj[list[0]] = list[1]; r原创 2021-08-30 16:50:12 · 102 阅读 · 0 评论 -
js 时间相关
目录1、获取指定日期时间2、将时间转化为时间戳3、计算两个时间戳相差的时间1、获取指定日期时间若需要自定义格式,自行完善。/** * 获取指定日期时间 * @param {date, format, connect}={时间,格式,连接符} */const getCurrentDate = (date, format, connect) => { var Y = date.getFullYear(); //得到年份 var M = date.getMonth() +原创 2021-06-02 17:42:55 · 123 阅读 · 0 评论 -
js 加密与解密汇总
目录一、编码和解码字符串二、base64 加密1、安装2、使用(1)、node 中使用 js-base64(2)、es6+ 使用 js-base64三、MD5 加密(不可逆)1、安装2、使用(1)、node 中使用 blueimp-md5(2)、es6+ 使用 blueimp-md5(3)、md5 强化加密四、sha1 加密(不可逆)1、安装2、使用(1)、node 中使用 js-sha1(2)、es6+ 使用 js-sha1五、sha256 加密(不可逆)1、安装2、使用(1)、node 中使用 js-s原创 2021-05-31 15:40:40 · 5251 阅读 · 0 评论 -
AST 抽象语法树
我们对javascript生态了如指掌,却常忽视javascript本身。这台机器,究竟是哪些零部件在支持着它运行?AST在日常业务中也许很难涉及到,但当你不止于想做一个工程师,而想做工程师的工程师,写出vue、react之类的大型框架,或类似webpack、vue-cli前端自动化的工具,或者有批量修改源码的工程需求,那你必须懂得AST。AST的能力十分强大,且能帮你真正吃透javascript的语言精髓。事实上,在javascript世界中,你可以认为抽象语法树(AST)是最底层。 再往下,就是转载 2021-05-13 11:04:58 · 564 阅读 · 0 评论 -
基本类型值与引用类型值
原理:https://blog.csdn.net/mChales_Liu/article/details/103112986基本类型值:var a = 1;function fn (a) { a=2;}fn(a);a;// 1引用类型值:var arr = [1];function fn (arr) { arr[0]=2;}fn(arr);arr;// [2]原创 2021-04-01 19:38:42 · 115 阅读 · 0 评论 -
操作对象、数组记
const obj={ name: "qwe", age: 18,}const newKey = "title";Object.keys(obj).forEach(key => { if(key === oldKey){ obj[newKey] = obj[key] delete obj[key] }})原创 2021-03-19 10:52:12 · 165 阅读 · 0 评论 -
在内置事件除自带参数外额外传递自定义参数
react 版:<input onChange={function (num) { const e = e || window.event; return handleChange(e, num) }.bind(this, 110)}/>vue 版:原创 2021-03-18 18:47:43 · 838 阅读 · 0 评论 -
判断一个数据是不是有效的JSON对象
const isJSON = (str) => { try { JSON.parse(str); return true; } catch (e) { return false; } }原创 2021-03-03 20:40:31 · 616 阅读 · 1 评论 -
js 判断数据类型(基本数据类型、引用数据类型)and 强制转换数据类型
const type = (target) => { var template = { "[object Array]" : "array", "[object Object]" : "object", "[object Number]" : "number - object", "[object Boolean]" : "boolean - object", "[object String]" : "string - o...原创 2021-03-03 15:37:51 · 124 阅读 · 1 评论 -
JS 运行机制——同步与异步
JavaScript是单线程的。为什么JavaScript是单线程?JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?所以,为了避免复杂性,JavaScript 就是单线程。为了利用多核CPU的计算能力,HTML5 提出 Web Worker 标准:允许 JavaScript 脚本创建多个线程,但是转载 2021-03-01 19:10:39 · 180 阅读 · 0 评论 -
解决报错:Uncaught SyntaxError: Unexpected token “xxx” in JSON at position 0
首先检查一下你的代码:if(localStorage.getItem("projectInfos")){ console.log(localStorage.getItem("projectInfos"));}如果能打印出值,然后去浏览器的 location 里,看一下里面存储的数据,将数据清空,刷新页面,报错解决。...原创 2021-03-01 10:49:09 · 693 阅读 · 0 评论 -
URL 相关
一、规范RESTful API 最佳实践二、匹配 URL 的 queryexport const regExpMatchURLQuery = (str) => { let obj = {}; str.replace(/([^?=&#]+)=([^?=&#]+)/g, (_, key, value) => (obj[key] = value)); str.replace(/#([^?=&#]+)/g, (_, hash) => (obj.原创 2021-01-29 12:37:48 · 93 阅读 · 0 评论 -
js 空对象的判断 & 科学的打印对象
法一:JSON.stringify(c)=='{}'法二:Object.keys(obj).length==0原创 2021-01-23 22:26:17 · 318 阅读 · 0 评论 -
短路运算和三目运算取不到值的情况
(item.name===projectName) && (title = item.title)原创 2021-01-19 21:05:32 · 169 阅读 · 0 评论 -
函数之JavaScript、Vue 与 React+JSX
一、函数之 JavaScript<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>test</title></head><body&g原创 2021-01-13 14:59:12 · 229 阅读 · 0 评论 -
“width+padding+position百分比-实现响应式布局” and “a标签的使用” and “背景图的设定” and “三目运算在标签中的使用”
<ul> <li v-for=(item, idx) in list> <a :href='item.link || "javascript:void(0);"' :style='`cursor: ${item.link ? "pointer" : "auto"}; backgroundImage: url(${item.url});`' target='_blank' ...原创 2020-12-30 14:06:37 · 163 阅读 · 0 评论 -
兼容pc和移动端
能用 CSS 控制的尽量不要用 JavaScript 去实现。所以,不推荐这样:terminalType () { const isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)原创 2020-12-28 20:56:04 · 225 阅读 · 0 评论 -
数组中第n项与第n+1项交换位置及删除某一项
一、数组中第 n 项与第 n+1 项交换位置const arr = [ { name: "张三", age: "18" }, { name: "李四", age: "19" }]const temporary = arr[0]arr[0] = arr[1]arr[1] = temporaryES6const a = [1,2,3];[a[0],a[2]] = [a[2],a[0]];a原创 2020-12-24 23:47:19 · 389 阅读 · 0 评论 -
属性的可枚举性及其迭代方法
一、属性的可枚举性及其迭代方法属性的可枚举性及其迭代方法 自身的可枚举属性 自身的不可枚举属性 自身的Symbol 键 继承的可枚举属性 继承的不可枚举属性 继承的 Symbol 键 in true√ true√ true√ true√ true√ true√ for...in true√ false false true√ false false obj.hasOwnProperty原创 2020-12-01 11:10:23 · 723 阅读 · 0 评论 -
js ES6 Iterator 遍历器与 for、for...of、for await...of、for...in 和 forEach 循环语句
一、IteratorIterator(遍历器)的概念默认 Iterator 接口调用 Iterator 接口的场合字符串的 Iterator 接口Iterator 接口与 Generator 函数遍历器对象的 return(),throw()二、for...of 循环...原创 2020-07-07 19:26:59 · 3038 阅读 · 0 评论 -
浅谈前端模块化规范
目录推荐阅读为什么需要模块化?1.原始的模块化写法2.添加命名空间3.立即执行函数表达式CommonJS、AMD 和 CMD 规范CommonJS 规范AMD 规范与 RequireJSCMD 规范与 Sea.jsECMAScript6 标准的模块支持exportimportexport default 命令推荐阅读掘金-前端模块化模块化七日谈部分内容摘自《移动 Web 前端高效开发实践》- iKcamp 著为什么需要模块化?Jav.转载 2020-11-03 11:32:33 · 145 阅读 · 0 评论 -
js 倒计时(计时器)
1、验证码倒计时// 倒计时var t = this.loginForm.countDown;var timer = setInterval(() => { if (t > 1) { t--; this.loginForm.countDown = t; } else { this.loginForm.isClickyzCode = false; this.loginForm.showTimer = true原创 2020-09-15 16:32:16 · 190 阅读 · 0 评论 -
js 实现:选择开始日期自动计算填充结束日期
template 模板中:<p>服务时间可通过续约延长</p><div class="time_box"> <div class="time"> <label for="starTime">开始时间</label> <select name="selectTime" id="starTime" required> <option :value=".原创 2020-09-15 15:48:45 · 1253 阅读 · 1 评论 -
js 函数防抖(debounce)与节流(throttle)
一、函数防抖二、函数节流原创 2020-07-21 13:23:57 · 4755 阅读 · 0 评论 -
js 读取本地文件
读取本地文件的实现方案一:用 Ajax 请求本地文件function readTextFile(file){ var rawFile = new XMLHttpRequest(); rawFile.open("GET", file, false); rawFile.onreadystatechange = function () { if(rawFile.readyState === 4) { if(rawFi原创 2020-07-12 15:43:46 · 20747 阅读 · 0 评论 -
js ES2020定义了 BigInt 构造函数
目录一、BigInt 数据类型1、BigInt 数据类型的用处2、BigInt 数据类型的特性二、BigInt 对象(实例)1、创建一个BigInt 对象2、BigInt 实例的方法(1)、BigInt 对象继承了 Object 对象的两个实例方法(2)、BigInt 对象继承了 Number 对象的一个实例方法(3)、BigInt 实例提供了三个静态方法三、BigInt 数据类型的子类型——BigUint64Array 和 BigInt64Array四、Dat.原创 2020-06-29 13:29:47 · 1117 阅读 · 0 评论 -
js 面试题
1、将这段字符串 "I'm????driving????to??beijing????after?breakfast",格式化为:"I'm driving to beijing after breakfast"。var str = "I'm????driving????to??beijing????after?breakfast", sub="";for(let i = 0; i < str.length; i++){ if(str[i] != '?'){ su原创 2020-06-28 19:22:14 · 1011 阅读 · 0 评论 -
js ES6 引用类型的新特性
一、字符串的语法变动1、模板字符串(1)、一般的模板字符串模板字符串使用反引号`,可以在字符串中加入变量、表达式 和 函数——变量名写在 ${} 中,JavaScript 表达式 和 函数 放在 ${} 中。模板字符串可以用来定义:普通字符串 和多行字符串。let userName = "Mali";let str = `Hello,my name is ${Mali}`;console.log(str);// Hello,// my name is Mali(2..转载 2020-06-28 11:11:18 · 3353 阅读 · 0 评论