JavaScript深入系列15篇正式完结!

2017-05-26
阅读 2 分钟
25.1k
JavaScript 深入系列共计 15 篇已经正式完结,这是一个旨在帮助大家,其实也是帮助自己捋顺 JavaScript 底层知识的系列。重点讲解了如原型、作用域、执行上下文、变量对象、this、闭包、按值传递、call、apply、bind、new、继承等 JS 语言中的比较难懂的概念。

JavaScript深入之继承的多种方式和优缺点

2017-05-12
阅读 5 分钟
7.2k
JavaScript深入系列第十五篇,讲解JavaScript各种继承方式和优缺点。 写在前面 本文讲解JavaScript各种继承方式和优缺点。 但是注意: 这篇文章更像是笔记,哎,再让我感叹一句:《JavaScript高级程序设计》写得真是太好了! 1.原型链继承 {代码...} 问题: 1.引用类型的属性被所有实例共享,举个例子: {代码...} 2.在...

JavaScript深入之创建对象的多种方式以及优缺点

2017-05-10
阅读 5 分钟
12.2k
JavaScript深入系列第十四篇,讲解创建对象的各种方式,以及优缺点。 写在前面 这篇文章讲解创建对象的各种方式,以及优缺点。 但是注意: 这篇文章更像是笔记,因为《JavaScript高级程序设计》写得真是太好了! 1. 工厂模式 {代码...} 缺点:对象无法识别,因为所有的实例都指向一个原型 2. 构造函数模式 {代码...} 优...

JavaScript深入之类数组对象与arguments

2017-05-08
阅读 4 分钟
7.1k
JavaScript深入系列第十三篇,讲解类数组对象与对象的相似与差异以及arguments的注意要点 类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: {代码...} 即便如此,为什么叫做类数组对象呢? 那让我们从读写、获取长度、遍历三个方面看看这两个对象。 读写 {代码...} 长度 {代码...} 遍...

JavaScript深入之new的模拟实现

2017-05-04
阅读 4 分钟
10.3k
JavaScript深入系列第十二篇,通过new的模拟实现,带大家揭开使用new获得构造函数实例的真相 new 一句话介绍 new: new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 也许有点难懂,我们在模拟 new 之前,先看看 new 实现了哪些功能。 举个例子: {代码...} 从这个例子中,我们可以看到,实...

JavaScript深入之bind的模拟实现

2017-05-03
阅读 5 分钟
8.4k
bind() 方法会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数。(来自于 MDN )

JavaScript深入之call和apply的模拟实现

2017-05-02
阅读 4 分钟
14k
JavaScript深入系列第十篇,通过call和apply的模拟实现,带你揭开call和apply改变this的真相 call 一句话介绍 call: call() 方法在使用一个指定的 this 值和若干个指定的参数值的前提下调用某个函数或方法。 举个例子: {代码...} 注意两点: call 改变了 this 的指向,指向到 foo bar 函数执行了 模拟实现第一步 那么...

JavaScript深入之参数按值传递

2017-04-28
阅读 2 分钟
4.4k
JavaScript深入系列第九篇,除了按值传递、引用传递,还有第三种传递方式 —— 按共享传递 定义 在《JavaScript高级程序设计》第三版 4.1.3,讲到传递参数: ECMAScript中所有函数的参数都是按值传递的。 什么是按值传递呢? 也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。 按...

JavaScript深入之闭包

2017-04-27
阅读 4 分钟
6.5k
JavaScript深入系列第八篇,介绍理论上的闭包和实践上的闭包,以及从作用域链的角度解析经典的闭包题。 定义 MDN 对闭包的定义为: 闭包是指那些能够访问自由变量的函数。 那什么是自由变量呢? 自由变量是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量。 由此,我们可以看出闭包共有两部分组成: 闭包...

JavaScript深入之执行上下文

2017-04-14
阅读 3 分钟
5.6k
JavaScript深入系列第七篇,结合之前所讲的四篇文章,以权威指南的demo为例,具体讲解当函数执行的时候,执行上下文栈、变量对象、作用域链是如何变化的。

JavaScript深入之从ECMAScript规范解读this

2017-04-13
阅读 8 分钟
6.6k
在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。

JavaScript深入之作用域链

2017-04-12
阅读 2 分钟
7.5k
JavaScript深入系列第五篇,讲述作用链的创建过程,最后结合着变量对象,执行上下文栈,让我们一起捋一捋函数创建和执行的过程中到底发生了什么?

JavaScript深入之变量对象

2017-04-11
阅读 3 分钟
6.6k
JavaScript深入系列第四篇,具体讲解执行上下文中的变量对象与活动对象。全局上下文下的变量对象是什么?函数上下文下的活动对象是如何分析和执行的?还有两个思考题帮你加深印象,快来看看吧!

JavaScript深入之执行上下文栈

2017-04-10
阅读 3 分钟
6.4k
JavaScript深入系列第三篇,讲解执行上下文栈的是如何执行的,也回答了第二篇中的略难的思考题。 顺序执行? 如果要问到 JavaScript 代码执行顺序的话,想必写过 JavaScript 的开发者都会有个直观的印象,那就是顺序执行,毕竟: {代码...} 然而去看这段代码: {代码...} 打印的结果却是两个 foo2。 刷过面试题的都知道...

JavaScript深入之词法作用域和动态作用域

2017-04-07
阅读 2 分钟
7.9k
JavaScript深入系列的第二篇,JavaScript采用词法作用域,什么语言采用了动态作用域?两者的区别又是什么?还有一个略难的思考题,快来看看吧。

JavaScript深入之从原型到原型链

2017-04-06
阅读 4 分钟
24.7k
JavaScript深入系列的第一篇,从原型与原型链开始讲起,如果你想知道构造函数的实例的原型,原型的原型,原型的原型的原型是什么,就来看看这篇文章吧。