博客园 - McRay
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=83518
2017-06-15T08:05:19Z
McRay
https://www.cnblogs.com/mcray/
feed.cnblogs.com
https://www.cnblogs.com/mcray/p/7018318.html
JS进阶系列之闭包 - McRay
刚刚总结完作用域链,我觉得很有必要马上对闭包总结一下,因为,之前也写过自己对闭包的理解,那时候只知道,闭包就是可以访问别的函数变量的函数,就是在函数里面的函数就叫做闭包,可是并没有深入探究,为什么,可以访问别的函数变量呢?直到,学习了JS的作用域链之后,就恍然大悟。 首先,来回顾一下,什么是作用域链
2017-06-15T08:05:00Z
2017-06-15T08:05:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】刚刚总结完作用域链,我觉得很有必要马上对闭包总结一下,因为,之前也写过自己对闭包的理解,那时候只知道,闭包就是可以访问别的函数变量的函数,就是在函数里面的函数就叫做闭包,可是并没有深入探究,为什么,可以访问别的函数变量呢?直到,学习了JS的作用域链之后,就恍然大悟。 首先,来回顾一下,什么是作用域链 <a href="https://www.cnblogs.com/mcray/p/7018318.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/7017840.html
JS进阶系列之作用域链 - McRay
在之前写的进阶系列里面,提到了 在创建阶段,要创建 、 还有 ,本次将重点讲解一下 。 JavaScript代码的执行过程 在讲解作用域链之前,首先了解一下,JavaScript代码的执行过程,包括两个步骤: 编译阶段 JavaScript引擎执行阶段 在编译阶段主要做的是,经过编译器的编译,将代码
2017-06-15T07:02:00Z
2017-06-15T07:02:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】在之前写的进阶系列里面,提到了 在创建阶段,要创建 、 还有 ,本次将重点讲解一下 。 JavaScript代码的执行过程 在讲解作用域链之前,首先了解一下,JavaScript代码的执行过程,包括两个步骤: 编译阶段 JavaScript引擎执行阶段 在编译阶段主要做的是,经过编译器的编译,将代码 <a href="https://www.cnblogs.com/mcray/p/7017840.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/7003245.html
JS进阶系列之执行上下文 - McRay
也许你会遇到过上面这样的面试题,你只知道它考的是变量提升,但是具体的原理又知道吗?所以我觉得很有必要搞明白底层的原理,才能加深理解,其实围绕的就是 的概念。 什么是执行上下文? 当控制器转到可执行的代码时,会进入该代码对应的执行上下文,可以理解为该代码对应的一个执行环境,就叫做执行上下文。 在Jav
2017-06-13T12:08:00Z
2017-06-13T12:08:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】也许你会遇到过上面这样的面试题,你只知道它考的是变量提升,但是具体的原理又知道吗?所以我觉得很有必要搞明白底层的原理,才能加深理解,其实围绕的就是 的概念。 什么是执行上下文? 当控制器转到可执行的代码时,会进入该代码对应的执行上下文,可以理解为该代码对应的一个执行环境,就叫做执行上下文。 在Jav <a href="https://www.cnblogs.com/mcray/p/7003245.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/7002089.html
JS进阶系列之内存空间 - McRay
也许很多人像我一样,觉得JS有垃圾回收机制,内存就可以不管了,以至于在全局作用域下定义了很多变量,自以为JS会自动回收,直到最近,看了阮一峰老师,关于javascript内存泄漏的文章时,才发现自己写的代码,存在很严重的内存泄漏问题,再者,因为忽略对内存的学习,导致后面很多进阶概念很模糊,比如深复制
2017-06-13T08:42:00Z
2017-06-13T08:42:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】也许很多人像我一样,觉得JS有垃圾回收机制,内存就可以不管了,以至于在全局作用域下定义了很多变量,自以为JS会自动回收,直到最近,看了阮一峰老师,关于javascript内存泄漏的文章时,才发现自己写的代码,存在很严重的内存泄漏问题,再者,因为忽略对内存的学习,导致后面很多进阶概念很模糊,比如深复制 <a href="https://www.cnblogs.com/mcray/p/7002089.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6938417.html
JavaScript运行机制详解 - McRay
上面代码的运行结果一直让我很费解,为什么 和 没有在 之后才执行,相当于先执行了定时器外面的函数,而后再执行定时器里的函数,这是为什么呢?在解释之前,我们有必要知道JavaScript的运行机制。 一、JavaScript为什么是单线程 要回答这个问题,只要我们假设一下,如果JavaScript支持
2017-06-03T12:45:00Z
2017-06-03T12:45:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】上面代码的运行结果一直让我很费解,为什么 和 没有在 之后才执行,相当于先执行了定时器外面的函数,而后再执行定时器里的函数,这是为什么呢?在解释之前,我们有必要知道JavaScript的运行机制。 一、JavaScript为什么是单线程 要回答这个问题,只要我们假设一下,如果JavaScript支持 <a href="https://www.cnblogs.com/mcray/p/6938417.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6878846.html
Laravel路由除了根目录全报404错误 - McRay
在laravel/app/Http/routes.php下添加上面的语句,然后再浏览器中使用 ,用Apache来运行,会报404错误,后来在网上查了资料,发现是URL重定向的问题,具体的解决方法如下:
2017-05-19T07:54:00Z
2017-05-19T07:54:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】在laravel/app/Http/routes.php下添加上面的语句,然后再浏览器中使用 ,用Apache来运行,会报404错误,后来在网上查了资料,发现是URL重定向的问题,具体的解决方法如下: <a href="https://www.cnblogs.com/mcray/p/6878846.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6850189.html
jQuery源码分析之整体框架 - McRay
之前只是知道jQuery怎么使用,但是我觉得有必要认真的阅读一下这个库,在分析jQuery源码之前,很有必要对整个jQuery有个整体的框架概念,才能方便后面对jQuery源码的分析和学习,以下是我总结的整体框架,具体说明都注释在每一句后面。 上面就是jQuery源码的整体框架,后面就会对每一个部分
2017-05-13T12:08:00Z
2017-05-13T12:08:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】之前只是知道jQuery怎么使用,但是我觉得有必要认真的阅读一下这个库,在分析jQuery源码之前,很有必要对整个jQuery有个整体的框架概念,才能方便后面对jQuery源码的分析和学习,以下是我总结的整体框架,具体说明都注释在每一句后面。 上面就是jQuery源码的整体框架,后面就会对每一个部分 <a href="https://www.cnblogs.com/mcray/p/6850189.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6831655.html
JS进阶系列之this - McRay
在javascript中,this的指向是在执行上下文的创建阶段确定的,其实只要知道不同执行方式下,this的指向分别是是什么,就能很好的掌握this这个让人摸不透的东西。 一、全局执行 全局执行又分为浏览器和node下的执行环境 1、浏览器 2、node 在浏览器器下全局执行的this指向wind
2017-05-09T09:27:00Z
2017-05-09T09:27:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】在javascript中,this的指向是在执行上下文的创建阶段确定的,其实只要知道不同执行方式下,this的指向分别是是什么,就能很好的掌握this这个让人摸不透的东西。 一、全局执行 全局执行又分为浏览器和node下的执行环境 1、浏览器 2、node 在浏览器器下全局执行的this指向wind <a href="https://www.cnblogs.com/mcray/p/6831655.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6785393.html
JS进阶系列之原型、原型链 - McRay
最近在看 JavaScript忍者秘籍 这本书的时候,再加上最近遇到的关于原型、原型链的面试题,所以萌生了要把这些知识梳理一遍的想法,所以以下是我自己对原型、原型链的看法 什么是原型 提到原型,我们可能都会想到与对象有关的东西,但其实,原型是与函数才是密切相关的。每当我们创建一个函数,都会有一个指向
2017-04-29T07:49:00Z
2017-04-29T07:49:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】最近在看 JavaScript忍者秘籍 这本书的时候,再加上最近遇到的关于原型、原型链的面试题,所以萌生了要把这些知识梳理一遍的想法,所以以下是我自己对原型、原型链的看法 什么是原型 提到原型,我们可能都会想到与对象有关的东西,但其实,原型是与函数才是密切相关的。每当我们创建一个函数,都会有一个指向 <a href="https://www.cnblogs.com/mcray/p/6785393.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6773163.html
原生JavaScript实现的贪吃蛇 - McRay
github代码地址:https://github.com/McRayFE/snake 涉及到的知识点: 键盘事件 setInterval()定时器 javascript中数组的使用 碰撞的检测 offsetLeft,offsetWidth,offsetTop,offsetHeight 实现的思路
2017-04-27T03:04:00Z
2017-04-27T03:04:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】github代码地址:https://github.com/McRayFE/snake 涉及到的知识点: 键盘事件 setInterval()定时器 javascript中数组的使用 碰撞的检测 offsetLeft,offsetWidth,offsetTop,offsetHeight 实现的思路 <a href="https://www.cnblogs.com/mcray/p/6773163.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6745471.html
AngularJS学习之依赖注入 - McRay
什么是依赖注入 AngularJS采用的是模块化的方式来组织代码的,它会将一些通用逻辑封装成一个对象或者函数,实现最大程度的复用,这导致了使用者和被使用者之间存在了一些依赖关系。 所以所谓的依赖注入是指,在运行的过程中自动查找需要的依赖关系,然后将依赖关系传递给使用者的一种机制。 例如,造一个控制器
2017-04-21T12:54:00Z
2017-04-21T12:54:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】什么是依赖注入 AngularJS采用的是模块化的方式来组织代码的,它会将一些通用逻辑封装成一个对象或者函数,实现最大程度的复用,这导致了使用者和被使用者之间存在了一些依赖关系。 所以所谓的依赖注入是指,在运行的过程中自动查找需要的依赖关系,然后将依赖关系传递给使用者的一种机制。 例如,造一个控制器 <a href="https://www.cnblogs.com/mcray/p/6745471.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6735453.html
AngularJS学习之数据绑定 - McRay
既然AngularJS是以数据作为驱动的MVC框架,在上一篇文章中,也介绍了AngularJS如何实现MVC模式的,所有模型里面的数据,都必须经过控制器,才能展示到视图中。 什么是数据绑定 首先来回忆一下MVC模式在AngularJS中的体现,我将会拿下面这张图片来说明。 一个模型中可能有多个数据,
2017-04-19T12:18:00Z
2017-04-19T12:18:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】既然AngularJS是以数据作为驱动的MVC框架,在上一篇文章中,也介绍了AngularJS如何实现MVC模式的,所有模型里面的数据,都必须经过控制器,才能展示到视图中。 什么是数据绑定 首先来回忆一下MVC模式在AngularJS中的体现,我将会拿下面这张图片来说明。 一个模型中可能有多个数据, <a href="https://www.cnblogs.com/mcray/p/6735453.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6731817.html
AngularJS学习之MVC模式 - McRay
AngularJS是谷歌开发维护的前端MVC框架,克服了HTML在构建应用上的不足,从而降低了开发的成本。 在学习AngularJS之前,有必要和之前学过的jQuery进行对比。jQuery是javascript的一个类库(一系列函数的集合),而AngularJS是javascript的一个框架(一
2017-04-19T01:49:00Z
2017-04-19T01:49:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】AngularJS是谷歌开发维护的前端MVC框架,克服了HTML在构建应用上的不足,从而降低了开发的成本。 在学习AngularJS之前,有必要和之前学过的jQuery进行对比。jQuery是javascript的一个类库(一系列函数的集合),而AngularJS是javascript的一个框架(一 <a href="https://www.cnblogs.com/mcray/p/6731817.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6686078.html
CSS布局之圣杯布局和双飞翼布局 - McRay
其实圣杯布局和双飞翼布局实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局。它们实现的效果都是一样的,差别在于其实现的思想。 一、圣杯布局 html代码中,将重要的内容middle放在container的最前面,然后是left、right 1、将三者均设置 2、将mi
2017-04-09T11:50:00Z
2017-04-09T11:50:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】其实圣杯布局和双飞翼布局实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局。它们实现的效果都是一样的,差别在于其实现的思想。 一、圣杯布局 html代码中,将重要的内容middle放在container的最前面,然后是left、right 1、将三者均设置 2、将mi <a href="https://www.cnblogs.com/mcray/p/6686078.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6669341.html
JS数据结构学习之排序 - McRay
在看 这本书中关于排序这一章的时候,我试着用javascript语言来重写里面几个经典的排序方法,包括冒泡排序、快速排序、选择排序、插入排序还有希尔排序。 一、冒泡排序 冒泡排序算是排序中最常见的,冒泡排序分为两个,一种是从小到大,一种是从打到小,具体是实现步骤就是:从最开始的位置或者最后的位置反方
2017-04-05T08:30:00Z
2017-04-05T08:30:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】在看 这本书中关于排序这一章的时候,我试着用javascript语言来重写里面几个经典的排序方法,包括冒泡排序、快速排序、选择排序、插入排序还有希尔排序。 一、冒泡排序 冒泡排序算是排序中最常见的,冒泡排序分为两个,一种是从小到大,一种是从打到小,具体是实现步骤就是:从最开始的位置或者最后的位置反方 <a href="https://www.cnblogs.com/mcray/p/6669341.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6669330.html
一个网页从输入URL到页面加载完的过程 - McRay
过程概述 1、浏览器查找域名对应的IP地址 2、浏览器根据IP地址与服务器建立socket连接 3、浏览器与服务器通信:浏览器请求,服务器处理请求和响应 4、浏览器与服务器断开连接 具体过程 1、搜索自身的DNS缓存 2、搜索操作系统自身的DNS缓冲 3、读取本地的HOST文件 4、浏览器发起一个D
2017-04-05T08:28:00Z
2017-04-05T08:28:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】过程概述 1、浏览器查找域名对应的IP地址 2、浏览器根据IP地址与服务器建立socket连接 3、浏览器与服务器通信:浏览器请求,服务器处理请求和响应 4、浏览器与服务器断开连接 具体过程 1、搜索自身的DNS缓存 2、搜索操作系统自身的DNS缓冲 3、读取本地的HOST文件 4、浏览器发起一个D <a href="https://www.cnblogs.com/mcray/p/6669330.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6659127.html
HTTP概念进阶 - McRay
一、什么是回调 回调是异步编程时的基础,将后续逻辑封装在回调函数中作为起始函数的参数,逐层嵌套,通过这种方式让程序按照我们所期望的方式执行。 二、什么是同步/异步 同步指的是:发送方发出数据后,等待接收方发回响应才能发送下一个数据包的通讯方式。程序的执行顺序与任务的排列顺序是一致的。 异步是指:发送
2017-04-02T07:29:00Z
2017-04-02T07:29:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】一、什么是回调 回调是异步编程时的基础,将后续逻辑封装在回调函数中作为起始函数的参数,逐层嵌套,通过这种方式让程序按照我们所期望的方式执行。 二、什么是同步/异步 同步指的是:发送方发出数据后,等待接收方发回响应才能发送下一个数据包的通讯方式。程序的执行顺序与任务的排列顺序是一致的。 异步是指:发送 <a href="https://www.cnblogs.com/mcray/p/6659127.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6659123.html
拖拽对象的封装 - McRay
一般我们实现拖拽对象,都是对单个元素进行封装,但是如果有多个元素都要实现拖拽效果,代码量就会十分庞大,所以我们可以结合面向对象的思想和闭包等知识,封装一个拖拽对象。 基本思路: 1、如何让元素动起来? 我们通常通过修改元素的 来让元素的位置改变。但是由于修改 值会引起页面重绘,而 不会,因此从性能优
2017-04-02T07:27:00Z
2017-04-02T07:27:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】一般我们实现拖拽对象,都是对单个元素进行封装,但是如果有多个元素都要实现拖拽效果,代码量就会十分庞大,所以我们可以结合面向对象的思想和闭包等知识,封装一个拖拽对象。 基本思路: 1、如何让元素动起来? 我们通常通过修改元素的 来让元素的位置改变。但是由于修改 值会引起页面重绘,而 不会,因此从性能优 <a href="https://www.cnblogs.com/mcray/p/6659123.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6640374.html
谈谈javascript中的变量提升还有函数提升 - McRay
在很多面试题中,经常会看到关于变量提升,还有函数提升的题目,所以我就写一篇自己理解之后的随笔,方便之后的查阅和复习。 首先举个例子 上面的例子中, 函数的声明在调用之后,但是还是会输出函数中的结果。在 函数的内部,变量 的声明之前就调用了,但是系统会输出 ,而不会报错,这里面就涉及到了 还有 ,为什
2017-03-29T08:22:00Z
2017-03-29T08:22:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】在很多面试题中,经常会看到关于变量提升,还有函数提升的题目,所以我就写一篇自己理解之后的随笔,方便之后的查阅和复习。 首先举个例子 上面的例子中, 函数的声明在调用之后,但是还是会输出函数中的结果。在 函数的内部,变量 的声明之前就调用了,但是系统会输出 ,而不会报错,这里面就涉及到了 还有 ,为什 <a href="https://www.cnblogs.com/mcray/p/6640374.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/mcray/p/6640113.html
new关键字对构造函数做了什么 - McRay
在javascript中,new关键字能让一个函数变得与众不同,把new搞清楚了,就明白构造函数中的this指向谁了。 举个例子 很显然使用 关键字之后,函数内部this的指向发生了变化,那么具体发生了什么变化呢,就得搞清楚new关键字究竟做了什么。 apply this res new 所以在ne
2017-03-29T07:42:00Z
2017-03-29T07:42:00Z
McRay
https://www.cnblogs.com/mcray/
【摘要】在javascript中,new关键字能让一个函数变得与众不同,把new搞清楚了,就明白构造函数中的this指向谁了。 举个例子 很显然使用 关键字之后,函数内部this的指向发生了变化,那么具体发生了什么变化呢,就得搞清楚new关键字究竟做了什么。 apply this res new 所以在ne <a href="https://www.cnblogs.com/mcray/p/6640113.html" target="_blank">阅读全文</a>