看透JavaScript
最新书摘:
-
Zcc9112017-11-213.2 JavaScript 的结构JS 的核心是对象,每个对象都可以包含0 个或多个由名值对组成的属性。对象的属性有两种类型:基础类型(直接量)和对象类型(另外还有一种特殊类型的属性,后面再给大家介绍)。基础类型的属性不可以再包含属性,而对象类型的属性还可以再包含自己的属性,此时该对象既是一个对象又是另外一个对象的属性。JS 中的对象又可以分为function 和object 两种类型(注意都是小写),这一点非常重要。理解了这一点就抓住了JS 的核心,在学习完后面的内容之后大家应该会有更深刻的认识。Java 等面向对象语言中的对象是通过类来创建的,它们的类是一个树结构,有统一的根节点(例如Java 中的Object),而JS 中没有类的概念,更没有类的树结构。JS 中的object 类型对象是使用function 类型对象创建的。JS 中经常使用的String、Array 和Date 等对象其实都是function 类型的对象,就连Object 对象也是function 类型的对象,而使用它们创建出来的对象就是object 类型。3.3 JavaScript 的内存模型JS 的本质是一个对象,一个对象可以包含多个属性,对象的属性可以分为直接量和对象两种类型,而对象又分为object 对象和function 对象两种类型。直接量和对象两种类型的属性在内存中的保存方式不同。直接量是直接用两块内存分别保存属性名和属性值,而对象需要三块内存,分别保存属性名、属性地址和属性内容。对于对象类型的属性来说,属性名只是指向了保存对象的内存地址,而并不是指向实际的对象。另外,有些读者可能会认为JS 是脚本语言,是由解释器执行的,不应该有自己的内存模型,其实并不是这样的。无论编译型语言还是解释型语言,它们的变量、函数、对象等数据都是保存在内存中的,使用时都需要使用变量名在指...
-
Zcc9112017-11-21前言第一次接触JavaScript时的场景现在已经记不清了,不过因为有其他语言的基础,我很快就上手了。当时感觉JavaScript就是一门不需要专门去学的语言,太简单了!但是,随着使用的深入,才逐渐发现事实并非如此。JavaScript既不像C语言这类面向过程的语言,也不像C++、Java这类面向对象的语言。JavaScript中有些概念虽然在其他语言(这里主要指C、C++和Java)里也有,但是含义却不尽相同,而且JavaScript中还有很多其他语言所没有的用法和概念。例如,在函数体中还可以再定义另外一个函数,函数也是对象,而且有个特殊的prototype属性,另外也可以使用函数创建对象,以及由此引出的闭包、参数作用域链和琢磨不透的this指针等,后来感觉越用越不明白了。随着近几年B/S结构的快速发展,JavaScript已经成了一门不可或缺的语言。GitHub在2015年8月20日发布的统计数据显示,JavaScript是现在最受欢迎的语言。另一篇开源中国社区的文章更是指出,在所有stars超过10000个的仓库中,基于JavaScript开发的仓库占到55.7%!既然离不开那就将其弄明白。经过一段时间的努力终于将其弄清楚了,而且也明白了其背后的实现原理。既然花费了不少精力,那么何不让更多的人受益,以使自己的付出更有意义呢。于是就有了大家手中的这本书。本书的目标是帮助读者理解JavaScript的各种语法及底层的实现原理,进而灵活使用其所提供的内在对象,所以本书并不是针对零基础的读者。如果您要阅读本书,至少需要使用过JavaScript,如果同时还使用过C/C++或者Java就更好了。本书特点系统:全书采用了总分总的结构。首先整体介绍了JavaScript、ECMAScript、DOM、BOM和HTML5之间的关系,然后依次对每一项内容进行讲解,最后进...