自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 前端跨域方法之window.name

window.name同样是适用于窗体之间的通信,window.name这个属性的值只要在同一个窗口中,前一个网页设置了它的值,后一个网页就可以读取他,无论是否跨域。例如:父窗口 http:127.0.0.1:3000/a.html 子窗口 http:127.0.0.1:3001/b.html子窗口内设置了window.name,那么父窗口就可以通过获取子窗口的window对象从而拿到window...

2018-02-24 18:37:42 824

原创 前端跨域方法之window.PostMessage

一、window.PostMessage适用于同一页面的不同窗体内跨域通信。该方法允许跨窗口通信,不论这两个窗口是否同源。二、举例来说,父窗口http://127.0.0.1:3000/index.html 向子窗口 http://127.0.0.1:3001/index.html发送消息,调用postMessage方法就行。(向谁发送消息,首先要获取其window对象,比如父窗口向子窗口发送消息...

2018-02-24 18:34:27 987

原创 前端跨域方法之JSONP

JSONP是服务器与浏览器跨源通信的常用方法,使用代价小。思想:网页通过添加一个<script>元素,向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。demoindex.html服务器端: ...

2018-02-24 18:32:04 452

原创 前端跨域方法之CORS

1、cross-domainCORS:是需要浏览器和服务器同时支持,IE浏览器不能低于IE10。整个跨域过程不需要用户的参与,从表面上看,CORS与ajax没有区别,代码相同,但是一旦浏览器发现跨域,它会自动在HTTP头部中添加附加信息(例如domain),关键在于服务器是否实现了CORS接口。CORS请求分为简单请求和非简单请求。只要满足上面的两大条件就是简单请求,否则就是非简单请求。一、简单请...

2018-02-24 18:30:13 7881

原创 前端跨域方法之document.domain和location.hash

document.domain如果两个窗体一级域名相同,只是二级域名不同,那么浏览器是允许通过设置document.domain共享数据。只要将document.domain设置成相同的域名就可以共享数据。location.hash一、片段识别符(location.hash)指的是URL的#后面的部分,比如http:127.0.0.1:3000/index.html#hello的#hello,只改...

2018-02-24 18:27:13 2782

原创 前端跨域方法之proxy(代理)

一、我们知道同源策略只是在浏览器中存在,不存在于服务器中。因此我们可以将需要跨域请求的地址转发给我们自己的服务器然后委托服务器去请求信息。demo如下:页面代码我们将需要请求的跨域地址发送给我们服务器服务器代码   服务器作为代理去请求信息。...

2018-02-24 18:24:20 10940

原创 前端跨域方法之websocket

websocket不受同源策略影响,只要服务器端支持,就能实现。demo:服务器端

2018-02-24 18:21:57 7368 2

原创 file-loader与url-loader的区别

file-loader与url-loader的区别相同点:file-loader与url-loader都是在webpack中引入图片的解决方案。不同点:1、file-loader:返回的是图片的public URL。2、url-loader:与file-loader不同,url-loader可以在图片大小小于设定的limit的时候返回的是一个bDataURL(base64码),大于limit时会调...

2018-02-14 13:41:51 3550

原创 webpack下的react配置文件(热替换)

webpack_dev_onfig.js配置文件const webpack = require('webpack');const path = require("path");const UglifyJSPlugin = require("uglifyjs-webpack-plugin");const entry = "../app.js";const outPutPath = "../p...

2018-02-14 10:15:02 1043

原创 prop 与 state的区别

prop 与 state的区别1、prop是组件对外的接口,是用来接受数据。state是组件内部记录状态,用来改变组件。2、prop的赋值时在组建外进行的,state的改变是在组件的内部。3、组件是不应该改变的prop的值,而state就是让组件进行改变的。...

2018-02-09 18:08:21 766

原创 redraw(重绘)与reflow(回流)

redraw(重绘)与reflow(回流)重绘当页面元素样式改变时不影响元素在文档流中的位置时(比如background,color等)这时候浏览器只会将新样式赋予元素进行;重新绘制操作重绘不会带来重新布局,不一定回流回流当改变的操作响应文档内容或者结构,或者元素的位置时就会触发回流。主要有以下几种情况DOM操作(对元素的增删改,顺序变化)改变元素的位置内容变化,包括表单区域的文本变化css属性的...

2018-02-09 18:06:29 572

原创 node.js的模块系统

模块系统概念在node.js中,以模块为单位划分所有功能,并且提供了完善的模块加载机制。该模块系统是基于CommonJS。在node.js中,一个js文件内的函数、变量都只在该文件内有效。当外界需要引用该文件内的内容时,我们可以通过exports对象将目标暴露出去,使用者需要通过require()引用JS文件。exportsexports导出有两种方式:exports和 module.export...

2018-02-09 18:04:29 306

原创 javascript实现私有属性与实例属性

javascript中,在函数上扩展方法属性的时候,通常选择在函数的prototype上扩展,比如function fn(){}fn.prototype.doSomething = function(){}  在上面的例子中,doSomething只能通过fn.prototype.doSomething来访问,并不能通过fn.doSomething访问。  不知道大家看到这种情况会怎么想

2017-09-08 10:38:12 798

原创 html5离线缓存机制--manifest

manifest:是web应用的一种缓存机制,当用户访问页面时,浏览器可以将我们规定的文件缓存下来,用于在没有网络的时候也能访问。1、manifest文件manifest是一种文本文件,它的扩展名可以是任意名字。文件内容主要是我们需要缓存的文件资源,一旦打开网站,浏览器将会自动进行缓存。2、manifest工作流程。在浏览器中存在一个APP cache,用来存储缓存文件。当浏览

2017-07-24 18:23:52 1950

原创 ubuntu第一天

1、查看目录ls -options route简要说明:1、ls -l: 以列表形式显示当前目录下的文件2、ls -a : 显示当前目录下所有文件,包括隐藏文件3、ls -h : 以文件大小显示当前目录下的文件4、ls route 显示指定目录下的文件注意事项:命令可以随意组合 example:二、关于路径

2017-06-21 16:15:33 366

原创 BlcoklyGame分析二

BlcoklyGame分析二makefile分析makefile中一共有两个主要执行应用分别对应命令make deps,make language.以及三个小应用make clean,make clean-languages,make clean-deps1、make deps是获得整个项目中所需要的第三方依赖(如Colsure,Blockly等)

2017-06-21 16:06:19 614

原创 BlocklyGame分析 一

一、如何编译下载好的BlocklyGame项目1、获得依赖 make deps进入主文件blockly-games-master,即文件makefile所在的目录。通过make deps,得到并构建项目所需要的依赖,比如.soy文件所需要的Closure模板。注,make这个命令,如果要在window下使用要安装GCC环境。linux下可以直接使用make这个命令。

2017-06-21 16:05:22 5426 1

原创 归并排序

在js中,采用的是自上而下的归并排序。原理:注:我们将每次经行合并排序的两个数组看成左右数组。左数组中的内容在原始数组中则在右数组的左侧。第一步:将数组分割为数个一个内容为一组的数组。//这一步并不是我们所想的那样一下子把原始数组分割成功,而是通过step(步长)来获取原始数组中的每一项。第二步:先两两为一组进行合并排序,然后四个四个为一组进行合并排序,依次类推,如果有成单元素则放到最后

2017-05-28 21:11:54 402

原创 underscore.js中如何判断两个对象的内容相同

在js中,我们知道对象是引用类型,我们使用时定义的变量都是指向其内存地址。一个内存地址只对应一个对象,内存地址不一样,两个对象就是内容再相同也是不相等的。 有时候我们指的两个对象相等指的是内容相同,那么此时我们应该如何去比较两个对象内容相同呢,underscore.js给出了两个主要函数:eq和deepEq函数。 eq主要是进行基本的判断,比如+0和-...

2017-05-28 15:49:42 3171 2

原创 计数排序

function countSort(list){ var maxlen = Math.max.apply(this,list)+1;//用来获得数组list中最大的数+1 var len = list.length;//获得list的长度 var b = new Array(len);//初始化输出数组B,长度与list相同 var c = new Array(

2017-05-27 23:11:15 410

原创 for .... in 存在的兼容问题你造吗?

在js中for_in主要是用来遍历对象的可枚举属性,包括原型链上的属性。然而for_in在IE < 9下可能会出现问题。for_in要出现问题必须满足两个条件:1:IE < 9;2:某些不可枚举的属性被重写。在js中当一些不可枚举的属性比如toString被重写后,它会变成可枚举。然而当你碰上了IE<9,这些被重写的属性依旧是不可枚举无法使用for_in去遍历。那么如何在IE<9的情况下

2017-05-23 18:14:00 4963

原创 js的垃圾回收机制

在js中局部变量只存在函数执行的过程中,在执行过程中,会为这些局部变量在栈或者堆上分配相应的空间储存它们的值,当执行完毕后,这些局部变量便会备销毁,用来释放内存空间。而这一操作是由垃圾回收机制完成,垃圾回收机制会跟踪那些变量有用,那些变量无用,然后对没有的变量进行销毁回收内存。这一实现在浏览器中主要有两种实现方式1、标记清除 这一方式是js中最常用的垃圾回收方式。当变量进入某一

2017-05-23 17:53:36 974

原创 js中的数字表示范围

在js中Number类型的实质是64为浮点数,javaScript所能表示的数值范围为正负1.7976931348623157乘以10的308次方,其最小所能表示的小数为正负5乘以10的负324次方,这两个边界值可以分别通过访问Number对象的MAX_VALUE属性和MIN_VALUE属性来获取.对于整数,在ECMAScript5规范中规定,无论正负数的值都不能大于2^53,在这个范围内,j

2017-05-22 14:45:08 4282

原创 underscore.js中的类型检测

在js中我们通常判断类型通常用 typeof ;但是这种判断方法往往得不到具体的类,比如typeof []得到是object而不是Array。普通类型:在underscore.js中使用的是 Object.prototype.toString.call(obj)来对一些普通类型进行判断。Object.prototype.toString.call(obj)会返回obj所属的具体类型。如:

2017-05-22 11:03:42 507

原创 underscore.js中为什么用void 0来验证undefined

在javascript中,undefined既不是关键字,又不是保留字。它只是全局对象的一个属性,可以被重写。例如:(function(){ var undefined = 1; console.log(undefined);//1})()因为undefined有如此弊端,所以不能用undefined去检测一个值是否为undefined类型。为了能够完美检测undefine

2017-05-21 10:34:57 423

原创 插入排序的原理

插入排序,一般以打牌排列手牌为例子。其实我感觉用两个数组表示更好理解,即使在整个代码中只有一个数组,但是可以抽象成两个数组。以要进行插入排序的数组内容之前的内容为新数组,原始数组为旧数组。old代表未排序的旧数组;new代表排序后的新数组。new数组中的内容是从old数组中一点一点插入进来并且每插一次进行一次排序,因此new数组永远是有序的。我们默认new数组中已经插入了old数组的第一项

2017-05-20 21:09:49 892

原创 javascript的性能优化

众所周知,js是一种解释型语言,执行速度要比编译型语言慢得多。为提高性能,我们可以通过以下方法改进代码的整体性能1、减少作用域链上的访问在js中访问全局变量总比访问局部变量要慢,因为要遍历作用域链。 1.1、避免全局查找。 将全局变量赋值给局部变量。例如下面这个例子 function updateUI() { var imgs =

2017-05-20 16:11:33 433

原创 underscore.js中 cb 函数与optimizeCb函数

在解读underscore.js源码的时候,首当其冲地便遇上了这两个函数,对于哦呜这么个小白来说,这段代码的作用和意义真的如同天书难懂。废话不多说,我们先归纳一下整个underscore.js中都那些函数用到了这两个函数1、optimizeCb(optimize:使最优化和尽可能地完善)   cb 、 _.each 、_.times2、cb _.map 、 _.filter 、 _.r...

2017-05-20 14:53:53 2261

原创 underscore.js如何实现全局变量和链式调用

underscore.js如何得到全局变量 _ :在整个Underscore.js中,没有通过new便能得到_对象。其实,在underscore.js中是以函数为对象(function也是对象),将所有的方法都是挂载在这个构造函数上面,然后将这个构造函数挂载在全局变量上,这样便不需要通过new去使用_。underscore.js的链式调用:如果要实现链式调用,必须要在每次的调用后返回

2017-05-18 13:47:56 1083

原创 js中如何判断+0与-0

在js中我们一般认为正负0是不相等的,但是 -0 == +0 会返回true,那么怎么判断正负0代码如下(判断-0)function(num){return num == 0 && 1 / num }(判断+0)function(num){return num == 0 && 1 / num > 0 }

2017-05-17 09:42:04 5599

原创 js中的的new操作

function People(){};var xiaoming = new People();通过new操作我们得到一个xiaoming的实例,那么在此过程中new操作符执行了那些操作。1、创建一个空对象。2、将空对象的原型指向我们要new的对象构造函数。3、将我们创建的空对象绑定到构造函数上。4、将空对象返回。

2017-05-11 09:57:24 1922

原创 浏览器同源策略的行为限制以及规避方法

本文参考自阮一峰老师的文章链接在此http://www.ruanyifeng.com/blog/2016/04/cors.html一、简单介绍同源策略,即三个相同: 协议相同,域名相同,端口相同。二、同源策略主要带来三个方面的行为限制: 1、cookie,localstorage和IndexDB无法读取 2、DOM无法获取 3、Ajax请求不能发送三、规避方法 1、cookie

2017-05-10 15:11:50 5300

原创 common.js与AMD

common.js是同步模块加载,AMD是异步模块加载。目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。本系列的第三部分,将通过介绍require.js,进一步讲解AMD的用法,以及如何将模块化编程投入实战。AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:  require([mo

2017-05-10 13:43:43 405

原创 split的正则用法

参数:第一个:指定删除的字符模式;第二个:指定返回数组的长度

2017-05-02 14:46:36 935

原创 解读replace的第二个参数为函数

replace代码:输出结果:参数解析:match:每次的匹配项;pos:匹配项在字符串中的位置;orginalText:原始字符串

2017-05-02 14:40:07 1514

原创 readolny和disabled区别

readonly和disabled 都是表单中的两个属性。共同点:元素节点内容无法编辑和获取焦点不同点:1、readonly只能用于input、textarea标签,而disabled可以用在所有表单标签上。       2、readonly设置的标签内容可以跟随post/get发送出去,disabled设置的标签内容不能被传送出去。

2017-05-02 13:14:20 424

原创 arguments.callee.length与arguments.length

arguments.callee.length:当前调用函数的实参长度是多少。arguments.length:当前你传了多少个参数function a(args0,args1){ console.log(arguments.length);//输出3 调用函数时传了多少个参数 console.log(arguments.callee.length);//输出2 函数括号里

2017-04-29 15:32:28 909

原创 js的双等号隐式转换规则

使用双等号进行比较的时候,当两个操作数类型不一样时,双等号会进行一个隐式转换,转换成相同类型再比较,以下是转换规则,在红宝书P51页都能查到。(自己总是忘记,还是感觉好记性不如烂笔头,写一写总是影响深刻)1、有一个操作数为布尔值,将布尔值转换成数值再进行比较,false为0,true为1.2、一个为字符串,另一个为数字。将字符串转换成数值再进行比较。3、一个操作符为对象,另

2017-04-29 15:20:21 2055

原创 psrseInt第二个参数含义

parseInt(args1,args2);parseInt中的第二个参数表示的是args1是几进制的数,然后再将其转换成10进制,如果不写第二个参数,默认为args1是十进制。将一个数值转换成多少进制可以利用toString(args);args就是你想转换成的进制数。

2017-04-29 15:13:31 768

原创 浅谈DOM遍历

DOM的遍历是深度优先的DOM结构遍历,那么什么是深度优先遍历。简而言之,首先访问出发点v,对纵深方向搜索。详细请百度。在“DOM2级遍历和范围”模块中,定义了两种用于遍历DOM结构的类型:NodeIterator和TreeWalker ,这两个属性在IE8以上支持,火狐1及更高版本、Safari1.3及更高版本,Opera7.6及更高版本,谷歌0.2及更高版本支持。NodeIterato

2016-12-07 22:08:07 2131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除