前言:本文是阅读《Javascript启示录》后的一个读书笔记,对本书的要点进行了一个归纳,不是原创内容哦。要想详细了解相关内容,请阅读原书。

  1. 对象是由存储值的已命名属性组成的。

  2. JavaScript中的几乎所有对象都可以表现得像对象。复杂值是对象,原始值也可以看做对象。

  3. 对象是通过使用new关键字调用构造函数或者通过使用字面量表达式来创建的。

  4. 构造函数是对象(Function()对象),因此在JavaScript里对象创建对象。

  5. JavaScript提供9个原生构造函数:Object(),Array(),String(),Number(),Boolean(),Function(),Date(),RegExp(),和Error()。在需要时,String(),Number(),和Boolean()构造函数可以提供原始值和对象包装器,以便于原始值被当做对象时,它们可以表现得像对象。

  6. null、undefined、“string”、10、true和false都是原始值,没有对象属性,除非将它们看做对象。

  7. 使用new关键字调用JS提供的原生构造函数时,会创建一个对象,被称为“复杂对象”或者“引用对象”。

  8. 原始形式的null、undefined、“string”、10、true和false等没有对象属性,除非将它们用作对象,然后JavaScript会在后台创建临时包装器对象,这些值就可以表现的像对象。

  9. 原始值是通过值存储的,复制时是通过字面量进行复制的。另一方面,复杂对象值是通过引用进行存储的,复制时是通过引用进行复制的。

  10. 当原始值的值相等时,它们即相等,而复杂对象只有在引用相同值的情况下才是相等的。也就是说:都指向同一对象时,一个复杂值才等于另一个复杂值。

  11. 由于复杂对象和引用的特性,JavaScript对象具有动态属性。

  12. JavaScript是可变的,这意味着可以在任何时间操作原生对象和用户自定义的对象属性。

  13. 可以使用点表示法或括号表示法获取、设置、更新对象属性。

  14. 当查找对象时,查找链先查看对象引用的属性;如果没有找到,则继续在构造函数的prototype属性上进行查找;如果仍找不到,由于原型拥有一个对象值并且该值是由Object()构造函数创建的,因此在Object()构造函数的ptototype属性上进行查找。如果还找不到,则确定属性值为undefinded。

  15. 用新对象替换ptototype属性会删除默认构造函数属性,也不会更新以前定义好的实例,只是从新对象替换ptototype属性时刻起影响后面的实例。

  16. 原型查找链表明了继承在JavaScript是如何实现的。

  17. 由于对象属性查找链的存在,因此所有对象都继承自Object(),因此prototype属性本身就是一个Object()对象。

  18. JavaScript函数是一等公民:函数是拥有属性和值的对象,总有返回值,可以是显式的或者是undefined。

  19. 函数在命名之前调用,会进行函数提升。

  20. 在函数内部使用this关键字时,它是一种用于引用包含该函数的对象的通用方法。

  21. 在运行时基于调用函数所在的上下文,可以确定this的值。

  22. 在嵌套函数中使用this关键字会引用全局对象,可以用另一个变量缓存this对象来解决这个问题。

  23. 在全局作用域内使用this关键字,this引用全局对象。

  24. JavaScript将函数作为创建唯一作用域的方法。

  25. JavaScript提供全局作用域,所有的JavaScript代码都在这个作用域内。

  26. JavaScript没有块级作用域,只有全局作用域、局部作用域(函数作用域)和eval作用域。

  27. 函数创建一个作用域链来解决变量查找问题。

  28. 作用域链是基于代码的编写方式创建,而不是基于调用函数所在的上下文。也就是说函数定义时确定作用域,而不是调用时确定。这使得函数即使从一个不同的上下文调用对象,也能够访问最初编写代码时所在作用域,这称为闭包。

  29. 函数内部定义的函数表达式和变量,如果没有使用var声明,则都会变成全局属性。然而,函数作用域内部的函数语句仍在编写代码时所作的作用域内定义。

  30. 全局作用域内定义的函数和变量(没有使用var),会成为全局对象的属性。

  31. 全局作用域内定义的函数和变量(使用var),会成为全局变量。

  32. Boolean()构造函数接受一个参数,会将它转换成布尔值。除0、-0、null、false、NaN、undefined和空字符串(“”)外的任何有效JavaScript值都将转换成true。

  33. 由Boolean()构造函数创建的false布尔对象(相对于原始值)是一个对象,并且对象转换为true;如果需要将一个非布尔值转化为布尔值,仅使用没有new关键字的Boolean()构造函数,返回的值将是一个原始值,而不是布尔对象。

  34. null是显式的指出对象属性不包含值。

  35. undefined第一种使用场景是声明变量,但没有指定值,第二是试图访问的对象属性没有被定义,并且不存在原型链中。

  36. Math()对象包含静态属性和方法,它是内置于JavaScript,而不是基于Math()构造函数来创建实例。

  37. Math是一种一次性对象,用于容纳静态属性和方法,没有创建Math实例的方法,而且它的很多属性都是无法改变的常数。

《Javascript启示录》要点汇总的更多相关文章

  1. javascript中event汇总

    原文:javascript中event汇总 ie firefox chrome opera Safari浏览器中对 event的处理并不一致,在此我将各个浏览器中event的兼容处理做了一个汇总,此处 ...

  2. 《JavaScript启示录》

    <JavaScript启示录> 基本信息 作者: (美)Cody Lindley 译者: 徐涛 出版社:人民邮电出版社 ISBN:9787115334947 上架时间:2014-2-21 ...

  3. javascript常用知识汇总

    javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会.从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记. 1.禁止手机虚拟键盘弹出 在开发适配手机的页面时,出现了这 ...

  4. JavaScript要点汇总——The Most Important

    关于JavaScript的基础变量,运算符的详解以及基本的分支循环嵌套已经在 JS基础变量及JS中的运算符 JS中的循环分支嵌套 说过了,今天我们所说的是做网页中最长用到的东西.内容不算少,要有耐心, ...

  5. 初中级Web开发人员的福音:《JavaScript启示录》上市了

    经历过14个月的等待,本书终于上市了,完全口语化叙述,请参考右边的链接. 本书介绍 本书无关于JavaScript设计模式,也无关于JavaScript面向对象代码实现.本书的写作目的也不是鉴别Jav ...

  6. javascript 跨域汇总

    什么是跨域?当两个域具有相同的协议.相同的端口.相同的host时,那么我们就可以认为它们是相同的域.比如:http://www.example.com/a.html 和 http://www.exam ...

  7. JavaScript学习要点

    Javascript相关内容 1.序列化--json - stringify() 将对象转换为字符串 - parse() 将字符串转换为对象 list=[11,22,33,44,55]; 结果:(5) ...

  8. CodeIgniter框架——知识要点汇总

    NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五. ...

  9. 前端开发 JavaScript 干货知识点汇总

    很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...

随机推荐

  1. Python之旅:字典

      Python数据类型 #作用:存多个值,key:value 存取,取值速度快 #定义:key必须是不可变类型,value可以是任意类型 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个 ...

  2. JDBC详解(一)

    一.相关概念介绍 1.1.数据库驱动 这里驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道理 ...

  3. Tensorflow Object_Detection 目标检测 笔记

    Tensorflow models Code:https://github.com/tensorflow/models 编写时间:2017.7 记录在使用Object_Detection 中遇到的问题 ...

  4. EndNote文献悬挂缩进的设置方法及设置参考文献序号后面空格长度

    一.EndNote文献悬挂缩进的设置方法 写论文时使用EndNote来插入和管理参考文献是一种非常方便的方法,但有时不同的杂志要求插入的文献要求第二行缩进格式,或者不缩进. 1.在EndNote中Ed ...

  5. python代码自动补全配置及Django入门Demo

    django入门代码示例小博客:https://pan.baidu.com/s/1pLjLPSv 1.自动补全功能 许多人都知道 iPython 有很好的自动补全能力,但是就未必知道 python 也 ...

  6. html概括

    --引入 什么是html? HTML(Hyper Text Markup Language)超文本标记语言. -->那么第一个问题----什么是标记语言呢? 标记语言就是让文本展示更丰富,更美观 ...

  7. Docker简介与安装配置

    目录 Docker简介 什么是Docker 为啥要用容器 Docker Engine Docker架构说明 Docker安装 Docker版本介绍 Ubuntu安装docker-ce CentOS7安 ...

  8. 数据科学的完整学习路径—Python版(转载)

    时间 2015-01-29 14:14:11  数盟原文  http://dataunion.org/?p=9805 译者: Allen 从Python菜鸟到Python Kaggler的旅程(译注: ...

  9. java中的悲观锁和乐观锁实现

    悲观锁就是认为并发时一定会有冲突发生,采用互斥的策略.比如java中的synchronized. 而乐观锁是假设并发时不会有冲突发生,如果发生冲突,则操作失败,并不断重试.乐观锁的机制就是CAS(Co ...

  10. 无法将网络更改为桥接状态 没有VMent0

    本文主要分享 VMware 10.0.2 报错信息:无法将网络更改为桥接状态的解决经验 工具/原料   VMware 10.0.2 方法/步骤   1 故障现象,导致虚拟机无法正常上网   设备管理器 ...