js
承蒙时光不弃1769203735
hello world!
展开
-
Promise为什么比setTimeout先执行?
基本概念为便于理解,在进入正题之前,不得不说以下一些基本的概念。进程与线程进程(process) 是操作系统结构的基础; 是系统进行资源分配和调度的基本单位; 在linux系统中可以使用ps-ef来查询进程列表(如下图)。比进程更小的单位叫做线程。 线程(thread) 是操作系统能够进行运算调度的最小单位; 它被包含在进程之中,是进...转载 2020-01-14 17:01:24 · 283 阅读 · 0 评论 -
原生js实现ajax
Ajax的原理:简单来说就是 通过XmlHttpRequest对象向服务器发异步请求,从服务器获得数据,然后用 javascript 来操作DOM更新页面的技术。一般来说,大家可能都会习惯用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax方法呢?JQuery提供的Ajax方法:$.ajax({ url: , type: '', da...转载 2019-12-29 14:35:32 · 125 阅读 · 0 评论 -
prototype与__proto__区别
__proto__是每个对象都有的一个属性,而prototype是函数才会有的属性!!!使用Object.getPrototypeOf()代替__proto__!!!一、prototype几乎所有的函数(除了一些内建函数)都有一个名为prototype(原型)的属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法。prototype是通过调...转载 2019-10-12 10:16:50 · 188 阅读 · 0 评论 -
js比较两个数组是否相等
今天在看廖雪峰大神的博客意外地发现javascript是不能用 '=='或'==='操作符直接比较两个数组是否相等的。先看案例:var a = [1,2,3,4,5];var b = a.slice();console.log(a); // [1,2,3,4,5]console.log(b); // [1,2,3,4,5]console.l...转载 2019-07-05 11:09:24 · 1350 阅读 · 0 评论 -
js比较两个对象是否相等
前言:如何判断两个对象是否相等?两个Object类型对象,即使拥有相同属性、相同值,当使用 == 或 === 进行比较时,也不认为他们相等。这就是因为他们是通过引用(内存里的位置)比较的,不像基本类型是通过值比较的。var obj1 = { name: "xiaoming", sex : "male"} var obj2 = { name: "xiaom...转载 2019-07-05 18:51:55 · 10687 阅读 · 1 评论 -
为什么要使用闭包和如何使用闭包
闭包JS中的闭包是一个我们经常遇到的名词,到底什么是闭包?为什么我们要使用闭包?又该如何使用闭包呢?为什么我们需要闭包首先来看一个例子,我们来实现一个计数器。var counter = 0;function add() { return counter += 1;}add();add();add();// 计数器现在为 3现在我们已经达到了目的,可是问题来了,...转载 2019-07-25 14:47:32 · 959 阅读 · 0 评论 -
理解Object.defineProperty的作用
对象是由多个名/值对组成的无序的集合。对象中每个属性对应任意类型的值。定义对象可以使用构造函数或字面量的形式:var obj = new Object; //obj = {}obj.name = "张三"; //添加描述obj.say = function(){}; //添加行为除了以上添加属性的方式,还可以使用Object.defineProperty定义新属性或修改原有的...转载 2019-07-22 18:08:43 · 121 阅读 · 0 评论 -
js中的数据类型
js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。typeof 操作符由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.typeof 123 //Numbertypeof 'abc' //Stringtype...转载 2019-08-14 08:03:05 · 109 阅读 · 0 评论 -
var a=1的过程中js做了什么
又是一年临近年底了,年底制定下了许多计划,正在一点一点实现,最近在开始读《你不知道的Javascript》了,也会慢慢把读书笔记通过博客的形式输出出来,让自己印象更深刻,今天就来聊聊JS中的var a = 2;这行代码发生了什么?编译对于编程语言来说都会有一个编译的过程,一段代码在执行前大多都会经历下面几个步骤:(具体的细节会根据语言特性而异)分词/词法分析(Tokenizing/Le...转载 2019-08-14 08:13:59 · 510 阅读 · 0 评论 -
JS专题之函数柯里化
前言在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。一、为什么会有函数柯里化?Currying 的重要意义在于可以把函数完全变成「接受一个参数;返回一个值」的固定形式,这样对于讨论和优化会更加方便。将关注的重点聚焦到函数本身,而不因冗...转载 2019-08-12 18:47:13 · 134 阅读 · 0 评论 -
Moment.js常见用法总结
Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。 日常开发中,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等。接下来,我将按照这些操作对Moment.js中的Doc进行整理分类,方便学习和日后的查阅。获取时间 Start of Time moment().startOf(String...转载 2019-08-26 16:53:51 · 189 阅读 · 0 评论 -
js 实现纯前端将数据导出excel
上代码:<html><head> <p style="font-size: 20px;color: red;">使用a标签方式将json导出csv文件</p> <button onclick='tableToExcel()'>导出</button></head><body> &l...转载 2019-08-29 14:26:26 · 124 阅读 · 0 评论 -
javaScript split 按空格和换行切割
input_str.split(/[\s\n]/)原创 2019-09-20 16:16:33 · 1898 阅读 · 0 评论 -
理解WebSocket心跳及重连机制
在使用websocket的过程中,有时候会遇到网络断开的情况,但是在网络断开的时候服务器端并没有触发onclose的事件。这样会有:服务器会继续向客户端发送多余的链接,并且这些数据还会丢失。所以就需要一种机制来检测客户端和服务端是否处于正常的链接状态。因此就有了websocket的心跳了。还有心跳,说明还活着,没有心跳说明已经挂掉了。1. 为什么叫心跳包呢?它就像心跳一样每隔固定的时间发一次...转载 2019-09-24 10:53:19 · 474 阅读 · 0 评论 -
使用reconnecting-websocket.js实现websocket重连
安装npm install --save reconnecting-websocket使用import ReconnectingWebSocket from 'reconnecting-websocket';// const rws = new WebSocket('ws://my.site.com'); const rws = new ReconnectingWebSock...原创 2019-09-24 11:59:57 · 4279 阅读 · 0 评论 -
js 从开始和结束时间得到中间所有天
今天在论坛中看到一个帖子,给定输入的字符型日期和结束的字符型日期,计算中间间隔的每一天的日期。正好项目不忙,就动手写了一下,记录下来吧。原问题var start_time = "2015-2-1"var end_time = "2015-3-1"需求得到开始和结束时间之间所有天 return [ '2015-2-1',"2015-2-2" ... "2015-2-28","2015...转载 2019-07-08 19:14:24 · 1387 阅读 · 1 评论 -
js 如何删除对象中的一个属性
1.对象属性删除function fun(){this.name = 'mm';}var obj = new fun();console.log(obj.name);//mmdelete obj.name;console.log(obj.name); //undefined2.删除不了原型链中的变量,如:fun.prototype.age = 18;de...转载 2019-07-02 11:19:27 · 2862 阅读 · 0 评论 -
js获取Url中的参数(超级好用)
<!DOCTYPE html><html><head> <title>js获取url中的参数</title> <script type="text/javascript"> window.onload=function(){ console.log(GetQueryString("id&原创 2018-08-11 14:52:12 · 195 阅读 · 0 评论 -
js根据日期获取星期
js中提供了getDay()这样的一个函数,返回值为 0-6 代表星期日、星期一、、、星期六用法:var week=new Date().getDay(); if(week==0){ week="星期日"; } else if(week==1){ week="星期一"; } else if (week == 2) { ...原创 2018-08-24 17:48:22 · 3642 阅读 · 0 评论 -
js获取当前周、上一周、下一周日期
最近在做一个课表的功能,需实现选择了第几周之后,该周相关的日期会自动更改过来,于是就在网上找了资料,经过一下午的折腾,终于把它实现了。 虽然是用在小程序中,但js代码都是大同小异的,只需做一些小小的修改。如果你是用在web网页中,那么就不需要怎么修改了,下面我们来看代码。1、获取当前周、上一周、下一周日期<!DOCTYPE HTML PUBLIC "-//W3C//DT...原创 2018-09-06 10:18:44 · 21913 阅读 · 4 评论 -
js判断当前时间是否在某个时间段内
话不多说,上代码 // 判断时间范围 const date = new Date() const seperator1 = "-" const year = date.getFullYear() let month = date.getMonth() + 1 let strDate = date.getDate() if (month &...原创 2019-01-24 15:24:39 · 4932 阅读 · 0 评论 -
JS中判断一个对象是否为null、undefined、0、NaN
写了个 str ="s"++;然后出现Nan,找了一会。收集资料如下判断:1.判断undefined:var tmp = undefined; if (typeof(tmp) == "undefined"){ alert("undefined");}说明:typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、&q转载 2019-03-15 10:59:42 · 11378 阅读 · 0 评论 -
js移除数组中指定元素
首先需要找到元素的下标:var array = ["zhangsan", "lisi", "wangwu"];var index = array.indexOf("lisi");使用splice函数进行移除:if (index > -1) { array.splice(index, 1);}splice函数的第二个参数指删除的数目。splice直接修改原数组,...原创 2019-04-20 20:43:54 · 7966 阅读 · 0 评论 -
es5中的类、原型链、静态方法、继承
下面一段代码,讲解了如何使用es5创建一个类、设置原型链属性方法、设置静态方法function Person(name,age) { // 构造函数里面的方法和属性 this.name=name this.age=age this.run=function(){ console.log(`${this.name}-----${this.a...原创 2019-04-27 18:09:19 · 490 阅读 · 0 评论 -
JavaScript Array filter() 方法
定义和用法filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。注意:filter() 不会对空数组进行检测。注意:filter() 不会改变原始数组。实例返回数组ages中所有元素都大于 18 的元素:var ages = [32, 33, 16, 40];function checkAdult(age) { ...转载 2019-05-09 15:42:55 · 111 阅读 · 0 评论 -
JavaScript 数组find() 方法
定义和用法find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。find() 方法为数组中的每个元素都调用一次函数执行:当数组中的元素在测试条件时返回true时, find() 返回符合条件的元素,之后的值不会再调用执行函数。 如果没有符合条件的元素返回 undefined注意:find() 对于空数组,函数是不会执行的。注意:find() 并没有改变数组...转载 2019-05-07 16:18:34 · 6744 阅读 · 0 评论 -
withRouter() 在非路由组件中使用路由库的api
我们知道,在非路由组件中,是拿不到例如像 this.props.location.pathname 数据。倘若我们想拿到类似这种路由数据,可以使用withRouter()将非路由组件包装成路由组件。用法与redux中的connect类似。如下:import React, {Component} from 'react'import {withRouter} from 'react...原创 2019-05-07 17:26:48 · 464 阅读 · 0 评论 -
JavaScript Array indexOf() 方法
实例查找数组中的 "Apple" 元素:var fruits = ["Banana", "Orange", "Apple", "Mango"]; var a = fruits.indexOf("Apple");a结果输出:2以上输出结果意味着 "Apple" 元素位于数组中的第 3 个位置。定义和用法indexOf() 方法可返回数组中某个指定的元素位置。该方...转载 2019-05-21 09:07:32 · 796 阅读 · 0 评论 -
JS 中深拷贝的几种实现方法
JS 中深拷贝的几种实现方法1、使用递归的方式实现深拷贝//使用递归的方式实现数组、对象的深拷贝function deepClone1(obj) { //判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝 var objClone = Array.isArray(obj) ? [] : {}; //进行深拷贝的不能为空,并且是对象或者是 ...原创 2019-05-22 18:17:45 · 270 阅读 · 0 评论 -
js时间字符串与时间戳之间的转换
1、当前时间换时间戳var timestamp = parseInt(new Date().getTime()/1000); // 当前时间戳document.write(timestamp);2、当前时间换日期字符串var now = new Date();var yy = now.getFullYear(); //年var mm = now.getMont...转载 2019-05-30 17:33:50 · 2025 阅读 · 0 评论 -
关于forEach()方法不能使用break跳出循环问题
js编程语法之break语句:break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。由于它是用来退出循环或者switch语句,所以只有当它出现在原生的例如:for()循环 while() 循环 do-while()循环这些语句时,这种形式的break语句才是合法的。那么,如果我们想要跳出例如forEach()这种循环时,该如何写我们的代码呢?答案很简单...原创 2019-06-21 19:50:48 · 9531 阅读 · 0 评论 -
js日期相减函数
话不多说,上代码<!DOCTYPE html><html><head> <title>js日期相减函数</title> <script type="text/javascript"> window.onload=function(){ console.log(DateMinus('2018-8原创 2018-08-11 14:49:38 · 426 阅读 · 0 评论