本系列的作者是Kyle Simpson,上卷译者赵望野.梁杰,中卷译者单业,下卷译者单业.姜南. 我个人觉得第一卷是本系列最好的(必读),而第二卷虽然也讲解了很多知识点,但是对于异步和性能的那部分提及了信任问题上,我不敢苟同,毕竟开源的大环境下,林子大了什么鸟都有,不能因为一两个问题而对所有的开源项目都抱以怀疑,而Promise如文中介绍的一样,真正上手后真的会爱不释手,配合async.await一起使用以及一些新的语法,可以节省不少代码,易用程度不亚于那些流行的异步框架(关键还是在于真正去用,…
JavaScript的对象是一种无序的集合数据类型,它是由若干键对组成. var guagua = { name:'瓜瓜', birth:1988, school:'No.1 Middle School', height:1.70, weight:65, score:null }; JavaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开.注意,最后一个键值对不需要在末尾加,, 如果加了,有的浏览器(如低版本的IE)将报错. 上述对象申明了一个name属性,值…
JavaScript字符串很容易被认为本质就是字符数组,ECMAScript规范中字符串作为一种单独的string类型,它的底层实现可能是数组,也可能是其他数据结构,因不同的JavaScript引擎而异.就像c++语言一样,c++最新标准为国际化标准组织与2011年发布,不同的编译器(例如cl.gcc.g++等)对这套标准的实现都有所不同,甚至有些编译器还增加了一些个性化的元素.目前主流的JS引擎有SpiderMonkey(Mozilla浏览器使用的引擎).V8引擎(Chrome浏览器引擎)等,…
第四章  混核对象“类” 1.理论 面向对象编程强调的是数据和操作数据的行为本质上是互相关联的.实例化,继承,多态性 javascript中只有对象,并不存在可以被实例化的“类”.一个对象并不会被复制到其他对象,他们会被关联起来,由于其他语言中类表现出来的都是复制行为,因此js开发者也想出一个方法来模拟类的复制行为——混入.混入有两种类型:显式和隐式. 2.显式混入 // 非常简单的 mixin(..) 例子 : function mixin( sourceObj, targetObj ) {…
最近在读一本进阶的JavaScript的书<你不知道的JavaScript(上卷)>,这次研究了一下“this”. 当一个函数被调用时,会创建一个活动记录(执行上下文). 这个记录会包含函数在哪里被调用(调用栈).函数的调用方法.传入的参数等信息. this就是记录的其中一个属性,会在函数执行的过程中用到. this既不指向函数自身也不指向函数的作用域. this实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用. 一.调用位置 调用位置就在当前正在执行的函数的前一个调用中…
JavaScript中,我们希望别人无法修改我们创建的对象.比如,代码库的作者很可能想锁定核心库的某些部分来保证它们不被意外地修改.ES5中引入了三种锁定修改的级别:防止扩展preventExtensions.密封seal.冻结frezze. 这三种级别逐渐增强.对于超过级别的行为,在非严格模式下将会悄无声息地失败,在严格模式下将会抛出一个错误.因此,建议使用严格模式,更加方便调试. 正常对象: 可以添加属性和方法,所有属性和方法可以被删除.修改. var person = { name: "N…
一.[[Prototype]] JavaScript中的对象有一个特殊的[[Prototype]]内置属性,其实就是对于其他对象的引用. var myObject = { a: 2 }; myObject.a; 当你试图引用对象的属性时会触发原型[[Get]]操作,比如myObject.a. 1. 第一步是检查对象本身是否有这个属性,如果有的话就使用它. 2. 如果a不在myObject中,就需要使用对象的[[Prototype]]链了. 1)Object.prototype 普通的[[Prot…
最近在读一本进阶的JavaScript的书<你不知道的JavaScript(上卷)>,里面分析了很多基础性的概念. 可以更全面深入的理解JavaScript深层面的知识点. 一.函数作用域 1)函数作用域 就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用. function foo(a) { var b = 2; function bar() { // ... } var c = 3; } bar(); // 失败 console.log( a,…
Array 数组对象数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的数组定义的方法: 1. 定义了一个空数组: var 数组名= new Array(); 2. 定义时指定有n个空元素的数组: var 数组名 =new Array(n); 3.定义数组的时候,直接初始化数据: var 数组名 = [<元素1>, <元素2>, <元素3>...]; 我们定义myArray数组,并赋值,代码如…
第三章   JavaScript操作BOM对象 一.window对象 浏览器对象模型(BOM)是javascript的组成之一,它提供了独立与浏览器窗口进行交换的对象,使用浏览器对象模型可以实现与HTML的交互. 他的作用是将相关的元素组织包装起来,提供给程序设计人员使用,从而降低开发人员的劳动量,提高设计Web页面的能力. BOM是一个分层结构: Window对象是整个BOM的核心,在浏览器中打开网页后,首先看到是浏览器窗口,即顶层的window对象:其次是网页内容,即document(文档)…