随笔分类 -  JavaScript技术

摘要:如果有 x-forwarded-for 的请求头,则取其中的第一个 IP,否则取建立连接 socket 的 remoteAddr。 而 x-forwarded-for 基本已成为了基于 proxy 的标准HTTP头,格式如下,可见第一个 IP 代表其真实的 IP,可以参考 MDN X-Forward 阅读全文
posted @ 2020-07-28 11:01 Magi黄元 阅读(329) 评论(0) 推荐(0) 编辑
摘要:1-单项链表 function LinkedList() { let Node = function(element) { // 辅助类,表示要添加到链表中的项 this.element = element; this.next = null; //next属性是只想链表的下一个节点的指针 }; l 阅读全文
posted @ 2020-07-28 09:54 Magi黄元 阅读(152) 评论(0) 推荐(0) 编辑
摘要:恢复内容开始 背景 数组并不总是组织数据的最佳数据结构,原因如下。在很多编程语言中,数组的长度是固定的,所以当数组已被数据填满时,再要加入新的元素就会非常困难。 在数组中,添加和删除元素也很麻烦,因为需要将数组中的其他元素向前或向后平移,以反映数组刚刚进行了添加或删除操作。 然而,JavaScrip 阅读全文
posted @ 2020-07-10 14:57 Magi黄元 阅读(299) 评论(0) 推荐(0) 编辑
摘要:学习方式 分类刷题:很多第一次接触力扣的同学对于刷题的方法不太了解,有的人跟着题号刷,有的人跟着每日一题刷,但是这种漫无目的的刷题方式一般都会在中途某一天放弃,或者刷了很久但是却发现没什么沉淀。这里不啰嗦,直接点明一个所有大佬都推荐的刷题方法:把自己的学习阶段分散成几个时间段去刷不同分类的题型,比如 阅读全文
posted @ 2020-07-09 15:44 Magi黄元 阅读(660) 评论(0) 推荐(0) 编辑
摘要:先总结: Set1. 成员不能重复2. 只有健值,没有健名,有点类似数组。3. 可以遍历,方法有add, delete,hasweakSet 1. 成员都是对象 2. 成员都是弱引用,随时可以消失。 可以用来保存DOM节点,不容易造成内存泄漏 3. 不能遍历,方法有add, delete,has M 阅读全文
posted @ 2020-06-15 15:53 Magi黄元 阅读(848) 评论(0) 推荐(0) 编辑
摘要:MVC 上个世纪70年代,美国施乐帕克研究中心,就是那个发明图形用户界面(GUI)的公司,开发了Smalltalk编程语言,并开始用它编写图形界面的应用程序。 到了Smalltalk-80这个版本的时候,一位叫Trygve Reenskaug的工程师为Smalltalk设计了MVC(Model-Vi 阅读全文
posted @ 2020-06-11 11:13 Magi黄元 阅读(187) 评论(0) 推荐(0) 编辑
摘要:单例设计模式:保证一个类仅有一个实例,并且提供一个访问它的全局访问点。有些对象只需要一个,这时可用单例模式。 传统的单例模式 和new 创建对象的调用不一样 调用者要调用xxx.getInstance才能获得该单例 function Singleton(name) { this.name = nam 阅读全文
posted @ 2020-06-11 09:53 Magi黄元 阅读(392) 评论(0) 推荐(0) 编辑
摘要:关于 JSBridge,绝大多数同学最早遇到的是微信的 WeiXinJSBridge(现在被封装成 JSSDK),各种 Web 页面可以通过 Bridge 调用微信提供的一些原生功能,为用户提供相关的功能。 JSBridge 很早就出现在软件开发中,在一些桌面软件中很早就运用了这样的形式,多用在通知 阅读全文
posted @ 2020-06-10 22:02 Magi黄元 阅读(1273) 评论(0) 推荐(0) 编辑
摘要:Number.isNaN 对比 isNaN typeof NaN 'number' 由于NaN 是 number 类型。 所以不能直接区分出 NaN 和普通数字。 甚至对于 NaN 和 普通数字,当调用 Object.prototype.toString.call 方法时都会返回 [object N 阅读全文
posted @ 2020-05-16 22:54 Magi黄元 阅读(1254) 评论(0) 推荐(0) 编辑
摘要:Cookie 用于存储 web 页面的用户信息。 什么是 Cookie? Cookie 是一些数据, 存储于你电脑上的文本文件中。 当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。 Cookie 的作用就是用于解决 "如何记录客户端的用户信息": 当用户访问 阅读全文
posted @ 2020-05-09 16:18 Magi黄元 阅读(185) 评论(0) 推荐(0) 编辑
摘要:设计 LazyMan 类,实现以下功能 实现一个LazyMan,可以按照以下方式调用: LazyMan('Hank')输出: Hi! This is Hank! LazyMan('Hank').sleep(10).eat('dinner')输出 Hi! This is Hank! //等待10秒.. 阅读全文
posted @ 2020-05-07 11:03 Magi黄元 阅读(265) 评论(0) 推荐(0) 编辑
摘要:this 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。 记住这句话,this 你已经了解一半了。 例 1: var name = "windowsName"; function a() { var name = "Cherry"; con 阅读全文
posted @ 2020-05-06 18:52 Magi黄元 阅读(169) 评论(0) 推荐(0) 编辑
摘要:为什么是 MongoDB ? 对于 Web 应用来说,通常数据库的选择可以划分为两大类:关系型和非关系型。 其中前者优点类型于电子表格,它的数据是结构化并且伴随着严格规定。 典型的关系型数据库包括:MySQL、 SQL Server 以及 PostgreSQL。而后者通常也被称为 NoSQL 数据库 阅读全文
posted @ 2020-05-05 02:26 Magi黄元 阅读(540) 评论(0) 推荐(0) 编辑
摘要:API 就是一种代码之间交互的一种方式,它既可以是在程序内部也可以是通过网络的跨机器进行。 例如,Express 中的 app.use 和 app.get 就属于在内部使用 API 。而通过 HTTP 或者 FTP 等协议发送 JSON、XML 数据的方式则属于后者。 接下来的内容包括: 什么是 A 阅读全文
posted @ 2020-05-04 03:39 Magi黄元 阅读(455) 评论(0) 推荐(0) 编辑
摘要:什么是路由? 假设,现在你尝试通过 example.com/someone 访问某人的推特或者微博主页,你会发现该请求的 HTTP 内容大致如下: GET /someone http/1.1 其中包含了 HTTP 请求使用的方法(GET),URI 信息(/someone) 以及 HTTP 协议版本 阅读全文
posted @ 2020-05-03 14:26 Magi黄元 阅读(227) 评论(0) 推荐(0) 编辑
摘要:原生 Node 的单一请求处理函数,随着功能的扩张势必会变的越来越难以维护。 Express 框架则可以通过中间件的方式按照模块和功能对处理函数进行切割处理。这样拆分后的模块不仅逻辑清晰,更重要的是对后期维护和开发非常有利。 本文将会详细介绍 Express 的使用,其中主要内容包括: 中间件是什么 阅读全文
posted @ 2020-04-30 02:26 Magi黄元 阅读(255) 评论(0) 推荐(0) 编辑
摘要:Express 框架的初衷是为了拓展 Node 内置模块的功能提高开发效率。 当你深入研究后就会发现,Express 其实是在 Node 内置的 HTTP 模块上构建了一层抽象。理论上所有 Express 实现的功能,同样可以使用纯 Node 实现。 在本文中,我们将基于前面的 Node 内容去探究 阅读全文
posted @ 2020-04-29 22:39 Magi黄元 阅读(342) 评论(0) 推荐(0) 编辑
摘要:模块的使用 在大多数编程语言中,我们都会对代码进行拆分,然后在使用的时候将这些文件引入其中。 例如,C 和 C++ 中的 include,Python 的 import ,Ruby 和 PHP 中的 require。而另外一些语言,如 C# 是在编译时完成跨文件引用的。 很长一段时间内,JavaSc 阅读全文
posted @ 2020-04-29 21:46 Magi黄元 阅读(162) 评论(0) 推荐(0) 编辑
摘要:在 Node.js 出现之前,前后端的开发必须使用不同的语言进行。为此你需要学习多种的语言和框架。有了 Node.js 之后,你就可以使用一门语言在前后端开发中自由切换,这是最吸引人的地方。 什么是 Express ? Express 是一个基于 Node.js 封装的上层服务框架,它提供了更简洁的 阅读全文
posted @ 2020-04-28 17:28 Magi黄元 阅读(353) 评论(0) 推荐(1) 编辑
摘要:Promise.all 接收一个 promise 对象的数组作为参数,当这个数组里的所有 promise 对象全部变为resolve或 有 reject 状态出现的时候,它才会去调用 .then 方法,它们是并发执行的。 var p1 = Promise.resolve(1), p2 = Promi 阅读全文
posted @ 2020-04-28 00:43 Magi黄元 阅读(3415) 评论(2) 推荐(0) 编辑