随笔分类 - 前端
全栈工程师都普及了,你还在学前端?还是赶紧和咱签订契约变成魔法少女吧!
摘要:拷贝对象分为浅拷贝和深拷贝,深拷贝只会复制地址,深拷贝才会复制内容,那么 JS 如何进行这两种拷贝呢?# 浅拷贝## Object.assign() 方法[Object.assign() - JavaScript | MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Objec...
阅读全文
摘要:# fill()今天刷 HackerRank 的题遇到需要创建链表数组(一维数组的每一项是个链表)的题。众所周知 JS 中的数组可以当链表用,我就用如下代码进行创建`let seqs = (new Array(5)).fill([])`运行时结果很是诡异,经调试发现这数组这五项指向的是同一个数组,看来 fill 方法并不是每次都创建新的数组。然后尝试使用`let seqs = (new Array...
阅读全文
摘要:- `pop()`,`push()`等在数组尾部操作的方法的时间复杂度为`O(1)`- `forEach()`、`map()`、`shift()`、`unshift()`、等需要遍历或者在数组头部操作的方法的时间复杂度为`O(n)`- `splice()`、`concat()`、`find()`等方法的时间时间复杂度为`O(n)`,但最优情况可能为`O(1)`,如`splice()`在...
阅读全文
摘要:# 一 使用原生 JSON.stringify 实现 # 二 自己写函数实现> [在线预览](http://jsfiddle.net/1010543618/zgsk5vu8/)```js// Notes:// - json2.js is not needed if browser supports JSON.stringify and JSON.parse natively// - ...
阅读全文
摘要:有时候检查元素是否可见不能单纯检查当前元素的样式,需要考虑具体情况,下面是一些检测方法:# [:visible Selector | jQuery API Documentation](https://api.jquery.com/visible-selector/)相关源码:[code.jquery.com/jquery-1.11.1.js](http://code.jquery.com/jqu...
阅读全文
摘要:# CommonJS- [CommonJS - Wikipedia](https://en.wikipedia.org/wiki/CommonJS)## 介绍主要在浏览器之外地方(例如服务器和桌面应用上)使用的模块化技术。## 规范一个文件就是一个模块,拥有单独的作用域。## 定义模块使用 exports 或 module.exports var myModule = (a, b)=>{...
阅读全文
摘要:> >> >> 生成器函数在执行时能暂停,后面又能从暂停处继续执行。>> 调用一个生成器函数并不会马上执行它里面的语句,而是返回一个这个生成器的 迭代器 (iterator)对象。当这个迭代器的 next() 方法被首次(后续)调用时,其内的语句会执行到第一个(后续)出现 yield 的位置为止,yield 后紧跟迭代器要返回的值。或者如果用的是 yield\*(多了个星号),则表示将执行权移交给...
阅读全文
摘要:[在线预览](https://jsfiddle.net/1010543618/fyf913t0/)使用《Web API 接口》的《MutationObserver》[MutationObserver](https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver)网上查到的很多都是使用 Mutation events 的,但在 ...
阅读全文
摘要:# javascript 函数调用在 javascript 中,每一个函数在被调用的时候都会创建一个执行上下文,在该函数内部定义的变量和函数只能在该函数内部被使用,而正是因为这个上下文,使得我们在调用函数的时候能创建一些私有变量。- 先声明后调用 // 声明: var foo = function(){ /* code */ }; // 调用: foo();- 如果...
阅读全文
摘要:# 适用场景- 一般在需要使用匿名函数时使用# 误用场景- 函数作为构造函数- 需要修改函数的`this`- 需要使用`arguments`对象或访问`prototype`属性- 需要作为生成器函数## 例如### 需要修改函数的`this````javascriptvar user = { name: "zhang", appendAF: val => { cons...
阅读全文
摘要:# 转换为字符串```js"" + 10 === "10"; // true```# 转换为数字```js+"010.2"; //10.2Number("010.2"); //10.2parseInt("010.2", 10); //10```# 转换为布尔值```js!!"foo"; // true!!""; // false!!"0"; // true!!"1"; // true!!"-1";
阅读全文
摘要:看 Angular 依赖注入时发现的神奇的操作,实现原理是 `Function.prototype.toString()` 得到函数的字符串然后用正则判断。# 参见[javascript - How to get function parameter names/values dynamically? - Stack Overflow](https://stackoverflow.com/a/12...
阅读全文
摘要:闭包:> > 闭包是函数和声明该函数的词法环境的组合。 let:> > let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。 例:闭包和 let 修正匿名函数访问的变量```jsfunction foo(){ var bar = []; for (var index = 0; index < 9; index++) { bar[index] ...
阅读全文
摘要:[在线预览](https://jsfiddle.net/1010543618/ck2eoaae/)```html Document 身份证号:(前17位) (校验位)最后一位为: 计算 ```
阅读全文
摘要:# 字符实体(Entity)> 转义字符(Escape Sequence)也称字符实体 (Character Entity)。>> 定义转义字符串的主要原因是:>> 1. ``等符号已经用来表示 HTML TAG,因此不能直接当作文本中的符号来使用。但有时需求是在 HTML 页面上使用这些符号,所以需要定义它的转义字符串。> 2. 有些字符在 ASCII 字符集中没有定义(如版权符号 “©”)...
阅读全文
摘要:最早的 JS 引擎是纯解释器,现代 JS 引擎已经使用 JIT(Just-in-time compilation:结合预编译(ahead-of-time compilation AOT)和解释器的优点的编译方式)以提高性能# 主流引擎Chrome V8、SpiderMonkey、JavaScriptCore、Chakra> - [Chrome V8](https://en.wikipedia....
阅读全文
摘要:不清楚将这篇博客放到前端合不合适。。# 博客园 MetaWeblog 的用法API: [rpc.cnblogs.com/metaweblog/jffun-blog#BlogInfo](about:blank)一般都用 XML-RPC 库(Node.js 环境下可以用[baalexander/node-xmlrpc](https://github.com/baalexander/node-xmlrp...
阅读全文
摘要:# 安装 Express 和 http-proxy```bashnpm install --save express http-proxy```# 反向代理代码proxy.js```javascriptvar express = require('express');var app = express();var httpProxy = require('http-proxy');var apiP...
阅读全文
摘要:> [n - npm](https://www.npmjs.com/package/n):Interactively Manage Your Node.js Versions. Unfortunately n is not supported on Windows.```bashnpm install -g n```
阅读全文
摘要:# 基本使用1. 安装 较新版本 Node 自带,基本不用自己装2. 初始化 `npm init`之后一路 next3. 安装依赖- `npm install --production`安装 package.json 里已经声明了依赖(只安装 dependencies)- `npm install`安装 package.json 里已经声明了依赖(包括:devDepend...
阅读全文