摘要:
JSON(JavaScript Object Notation)全称JavaScript对象表示法,是一种数据交换的文本格式,用于读取结构化数据。 语法规则 JSON的语法可以表示三种类型值:简单值、对象、数组。 简单值 JSON中的简单值可以是字符串、数值、布尔值、null。 字符串必须使用双引号 阅读全文
摘要:
面向对象是一种描述代码组织架构的形式,一种在软件领域对真实世界中问题的建模方法。本文主要介绍面向对象程序设计(OOP)中的一些常见名词和概念 对象 何为对象?简单说就是事物或人物在程序设计语言中的变现形式。例如“人”可以被看做是一个对象,每个人都有名字、性别和年龄这些特征,在OOP中这些特征称为属性 阅读全文
摘要:
上一篇介绍了 "创建对象的5种模式" ,本篇介绍对象实现继承的3种形式。继承简单说就是在原有对象基础上稍作改动,得到一个新的对象,这个新对象可以拥有原对象的属性和方法。JS实现继承的3种方式:类式继承、class继承和拷贝继承。 JS这门语言和其他面向对象的语言不同,它并不支持类和类继承特性,只能通 阅读全文
摘要:
在 "JS对象类型 对象 认识对象" 一文中,介绍了创建对象的3种方式:new构造函数、对象字面量和Object.create()函数。下面基于这3种方式介绍下创建对象的5种常用模式。 对象字面量 对象字面量方式虽然可以创建单个对象,但是如果同时创建多个类似对象,会产生大量冗余代码。 工厂模式 为了 阅读全文
摘要:
JS中最复杂的莫过于prototype、proto和constructor之间的三角关系,搞清楚它们之间的关系对理解JS这门语言很重要,下面是我画的一张关系图,本文以该图为例解释它们之间的关系。 基本概念 【构造函数】用来初始化实例对象的函数是构造函数。图中浅绿色的People()、Object() 阅读全文
摘要:
this机制是js中很重要的知识点,它和作用域查询是两个容易混淆的知识点。本文将详细介绍this的4种绑定规则。 默认绑定 1. 全局环境中,this指向window。 2. 独立函数调用时,this指向window。严格模式下指向undefined。 3. 作为对象的方法调用时,this指向原对象 阅读全文
摘要:
定义 闭包是指函数声明时所处作用域外被调用的函数。所以闭包也是函数,只不过要满足3个条件才叫闭包: 1. 访问函数所处作用域。 2. 函数嵌套。因为只有函数嵌套才能创建不同的作用域。 3. 函数所处作用域外被调用。 示例中在全局作用域中被调用的foo2函数就是一个闭包。foo2声明时所处的作用域就是 阅读全文
摘要:
在ES6之前,JS中的作用域只有全局作用域和函数作用域。ES6引入了块作用域,使得开发和维护都变得更简单,在这里对ES6的块作用域进行简单介绍。 let js // 示例1 for (var i= 0; i 阅读全文
摘要:
声明提升(hoisting)分为变量声明提升和函数声明提升。声明从它们在代码中出现的位置被“移动”到最上面的过程,被称作声明提升。每个作用域都会有声明提升。 在介绍作用域的内部原理时有提过,引擎在解释JS代码前首先进行编译,编译过程中会找到所有的声明,并用合适的作用域将它们关联起来。 以 说明,这行 阅读全文
摘要:
词法作用域 在介绍作用域的第一篇文章中说到编译器的第一个阶段是分词,词法作用域就是定义分词阶段的作用域,是由代码中变量作用域和块作用域的位置决定的,所以词法分析器在处理代码时会保持作用域不变。 词法作用域只由函数被声明时所处的位置决定。 上面的例子中有三个逐级嵌套的作用域: 1. 第一级就是最外层的 阅读全文