![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
文章平均质量分 57
StarFishing
这个作者很懒,什么都没留下…
展开
-
带你用Node了解JSONP实现原理
1、JSONP是什么,解决了什么问题JSONP 指的是 JSON with Padding。由于跨域政策,从另一个域请求文件会引起问题。从另一个域请求外部脚本没有这个问题。JSONP 利用了这个优势,并使用 script 标签替代 XMLHttpRequest 对象。——w3cWeb页面上调用js文件时不受是否跨域的影响(不仅如此,我们还发现凡是拥有src这个属性的标签都拥有跨域的能...原创 2020-03-22 13:38:08 · 294 阅读 · 0 评论 -
JS命名规范
ECMAScript 规范中标识符采用驼峰大小写格式,驼峰命名法由小(大)写字母开始,后续每个单词首字母都大写。根据首字母是否大写,分为两种方式:Pascal Case 大驼峰式命名法:首字母大写。eg:StudentInfo、UserInfo、ProductInfoCamel Case 小驼峰式命名法:首字母小写。eg:studentInfo、userInfo、productInfo标...转载 2019-11-06 22:15:54 · 341 阅读 · 0 评论 -
手写Ajax实现以及Axios实现
ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。1.使用CSS和XHTML来表示。2 .使用DOM模型来交互和动态显示。3.使用XMLHttpRequest来和服务器进行异步通信。4.使用javascript来绑定和调用。Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而...原创 2019-02-16 18:53:53 · 4038 阅读 · 0 评论 -
移动端 touch 滑动事件
移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成。但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件。处理touch事件能跟踪到屏幕滑动的每根手指。以下是四种touch事件touchstart: //手指放到屏幕上时触发touchmove: //手指在屏幕上滑动式触发touchend: ...转载 2019-02-27 15:52:33 · 5536 阅读 · 4 评论 -
module.exports与exports,export与export default之间的关系和区别
首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念。CommonJS模块规范Node应用由模块组成,采用CommonJS模块规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属...原创 2019-02-19 00:20:58 · 3038 阅读 · 1 评论 -
ES6三点(...)扩展运算符
扩展运算符将一个数组转为用逗号分隔的参数序列console.log(...[a, b, c]) // a b c用于:1 将一个数组,变为参数序列 let add = (x, y) => x + y; let numbers = [3, 45]; console.log(add(...numbers))//4...转载 2019-02-24 22:18:43 · 163 阅读 · 0 评论 -
初探浅拷贝&深拷贝
思考这个代码为什么具有深拷贝作用obj = JSON.parse(JSON.stringify(deepCloneObj));浅拷贝与深拷贝在JavaScript中,对于Object和Array这类引用类型值,当从一个变量向另一个变量复制引用类型值时,这个值的副本其实是一个指针,两个变量指向同一个堆内存中的对象,改变其中一个变量,另一个也会受到影响。这种拷贝分为两种情况:拷贝引用和拷贝...转载 2019-02-24 22:27:38 · 129 阅读 · 0 评论 -
JS三座大山:原型与原型链,作用域及闭包,异步和单线程。
原型与原型链说到原型,就不得不提一下构造函数,首先我们看下面一个简单的例子:function Dog(name,age){ this.name = name; this.age = age;}let dog1 = new Dog("哈士奇",3);let dog2 = new Dog("泰迪",2);首先创造空的对象,再让 this 指向这个对象,通过 this...转载 2019-02-26 11:24:06 · 1373 阅读 · 0 评论 -
关于动态换肤的解决方案
关于动态换肤的解决方案最近在学习electron,希望在页面切换的时候动态更换背景色,也是参考了一个知名软件的效果,让我手痒起来,也想实现以下,之前在用element开发的时候接触到过换肤的一些思路,但是当时并没有这块的需求,也就搁置了,下面个跟大家探讨以下我的两种思路。效果图方式一 动态增加link标签所谓动态增加link标签就是在需要换肤的时候,把需要更改的颜色进行关键字替换,把新生成...原创 2019-07-18 21:31:24 · 1413 阅读 · 0 评论 -
关于Add(2)(3)问题
关于Add(2)(3)问题首先,add(2)(3)用JavaScript 实现首先,如果我们做一个简单的分析,我们可以简单地说这不仅仅是针对JavaScript的问题,而是可以用任何具有First Class功能的语言实现。当该语言中的函数被视为与任何其他变量一样时,编程语言被称为具有第一类函数。例如,在这种语言中,函数可以作为参数传递给其他函数,可以由另一个函数返回,并可以作为值赋值给变量...翻译 2019-07-17 23:11:57 · 871 阅读 · 0 评论 -
闭包内存泄露问题
反思闭包一、我理解的闭包二、先举几个例子三、为什么要使用闭包?四、闭包的弊端五、闭包为什么会导致内存占用过多?六、内存占用和内存泄漏七、反思一、我理解的闭包有权访问另一个函数作用域中局部变量的函数。创建方式,就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。概念都是这么一说,细节问题到是不少,下面我们细说一下。二、先举几个例子1.实现局部变量累加const sum...转载 2019-08-07 21:58:06 · 1184 阅读 · 0 评论 -
ES6 let 和 var 的区别
ES6 let 和 var 的区别1.let声明的变量不存在变量提升,但是存在“暂时性死区”(temporal dead zone,简称 TDZ)。2.let不允许在相同作用域内,重复声明同一个变量。3.let作用域为代码块(每个花括号范围内为一个作用域),而var 的作用域分为函数内声明和全局两种let命令ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变...原创 2019-02-16 18:33:48 · 2648 阅读 · 0 评论 -
ES6模块的import和export用法总结
ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。同时还有CMD规范,为同步加载方案如seaJS。ES6在语言规格的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。...转载 2018-12-26 11:04:43 · 3234 阅读 · 0 评论 -
Object.assign()对象拷贝
该Object.assign()方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。const object1 = { a: 1, b: 2, c: 3};const object2 = Object.assign({c: 4, d: 5}, object1);console.log(object2.c, object2.d);// exp...原创 2018-12-18 21:27:06 · 3444 阅读 · 0 评论 -
JS获取浏览器版本信息&&访问设备信息
总结了浏览器信息相关以及移动设备信息的获取方法首先提供一个较为简洁的获取方法,一般用于判断设备型号: function getOS() { // 获取当前操作系统 var os; if (navigator.userAgent.indexOf('Android') > -1 || navigator.userAgent.indexOf('Linux') > -1...转载 2018-11-30 20:36:06 · 13676 阅读 · 4 评论 -
js实现html页面转图片、并保存到本地
js实现html页面转图片,并保存图片在本地,实现原理为(html转canvas、canvas转image)需要的库:canvas2image.js 下载地址:https://github.com/SuperAL/canvas2image;需要的库:html2canvas.js 下载地址:http://html2canvas.hertzen.com/dist/html2canvas.mi...原创 2018-11-30 21:32:05 · 26145 阅读 · 8 评论 -
Promise对象
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。转载 2018-11-28 14:39:30 · 4184 阅读 · 0 评论 -
获取页面中视频的加载进度,音/视频加载过程
当音频/视频处于加载过程中时,会依次发生以下事件:loadstart定义和用法当浏览器开始寻找指定的音频/视频时,会发生 loadstart 事件。即当加载过程开始时。durationchange定义和用法当指定音频/视频的时长数据发生变化时,发生 durationchange 事件。当音频/视频加载后,时长将由 “NaN” 变为音频/视频的实际时长。loadedmet...原创 2018-12-12 14:53:58 · 6230 阅读 · 0 评论 -
javascript常用知识点总结
null和undefined两者数值相等,类型不同if(null==undefined)返回true;if(null===undefined)返回false,两者不同类型;var test="2e3";test=parseFloat(test);//test=parseInt(test);alert(test);2000(转换为float时会用科学计数法,结果为2000)//2(转换为i...原创 2018-12-14 14:01:58 · 750 阅读 · 0 评论 -
深入理解JS原型与原型链(三)
七. 函数对象 (复习一下前面的知识点)所有函数对象的proto都指向Function.prototype,它是一个空函数(Empty function)Number.__proto__ === Function.prototype // trueNumber.constructor == Function //trueBoolean.__proto__ === Function.pr...转载 2018-12-14 14:43:58 · 2520 阅读 · 1 评论 -
深入理解JS原型与原型链(二)
四. protoJS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__ 的内置属性,用于指向创建它的构造函数的原型对象。对象 person1 有一个 __proto__属性,创建它的构造函数是 Person,构造函数的原型对象是 Person.prototype ,所以:person1.__proto__ == Person.prototype请看下图:《...转载 2018-12-14 14:44:41 · 2671 阅读 · 1 评论 -
深入理解JS原型与原型链(一)
一. 普通对象与函数对象JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object 、Function 是 JS 自带的函数对象。下面举例说明var o1 = {}; var o2 =new Object();var o3 = new f1();function f1(){}; var f2 = function(){};var f3 = new...转载 2018-12-14 14:46:38 · 3151 阅读 · 3 评论 -
URL地址拼接方法封装
在前端开发中,我们经常会需要去请求不同页面的数据,这个时候我们就需要拼接我们的需求参数,并将我们的请求发送给后端处理,类似这样www.baidu.com?singer=王菲,这样我们就可以向后端去请求王菲的相关数据,这里把这个事情封装成了一个方法,方便调用,自己在项目中也可以使用这种方法:// 我们通常是用jsonp来请求数据,所以这里方法名定义为jsonp// url: 我们目标地址,如ww...原创 2018-12-17 21:24:51 · 17346 阅读 · 0 评论 -
为DOM元素动态添加class,解决addclass()的覆盖问题
当我们需要对dom元素动态添加一个新的样式时,通常会使用jquery的addclass()来完成$('div').addClass('color')但是这个方法有一个很大的弊端,他会覆盖原来的class,所以使用addclass()只能保证新的样式加上去,原来得就没有了;其次也可以用原生的js来添加,类似这样:document.getElementsByTagName('body')[0...原创 2018-12-18 11:49:30 · 32211 阅读 · 2 评论 -
JS中script标签defer和async属性的区别
向html页面中插入javascript代码的主要方法就是通过script标签。其中包括两种形式,第一种直接在script标签之间插入js代码,第二种即是通过src属性引入外部js文件。由于解释器在解析执行js代码期间会阻塞页面其余部分的渲染,对于存在大量js代码的页面来说会导致浏览器出现长时间的空白和延迟,为了避免这个问题,建议把全部的js引用放在标签之前。script标签存在两个属性,def...原创 2018-11-30 16:06:50 · 4752 阅读 · 4 评论