资料下载地址(equb, mobi, awz3, pdf):

百度网盘

提取码: c2sm

本资料仅用于学习交流,如有能力请到各大销售渠道支持正版!

本文首发于Liubasara的个人博客,承蒙喜爱,欢迎转载。

第1章 JavaScript简介

本章主要讲解了Javascript的诞生历史以及其各个组成部分。

JavaScript由三个不同的部分组成:

  • ECMAScript,有ECMA-262定义,提供核心语言功能。
  • 文档对象模型(DOM),提供访问和操作网页内容的方法和接口。
  • 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。

第2章 在HTML中使用JavaScript

本章主要讲解了在html中嵌入<script>标签的使用方法,是十分基础的内容,适合系统学习。

2.1 script元素

  • <script>标签有以下6个属性

    1. async 可选 表示异步下载脚本,不妨碍页面的其他操作,只对外部脚本文件有效
    2. chartset 可选 表示通过src属性指定的代码字符集,该属性的值会被大多数浏览器忽略(少用)
    3. defer 可选 表示监本可以延迟到文档完全被解析和显示之后再执行
    4. language 已废弃
    5. src 可选 表示包含要执行代码的外部文件
    6. type 可选 language的替代属性,表示编写代码使用的脚本语言的内容类型,默认text/javascript

    包含在<head标签>中的<script>元素,其内部的JavaScript代码将被从上至下依次解释。在解释器对<script>元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。

  • 不能在HTML文档中使用下面这种语法

    <script type="text/javascript" src="example.js"/>
    复制代码

    原因是这种语法虽然符合XHTML文档规范,却并不符合HTML规范,也不会得到某些浏览器(尤其是IE)的正确解析。(能在Vue等各大框架里面用是因为经过了转义和解析!

2.1.1 标签的位置

现代Web应用程序一般都把全部JavaScript引用放在<body>元素中,因为如果放在<head>中,便意味着必须等到全部JavaScript代码都被下载、解析和执行完成后,才能开始呈现页面的内容。(浏览器在遇到<body>标签时才开始呈现内容)。

2.1.2 延迟脚本

介绍defer属性,加入此属性后脚本会被延迟到整个页面都解析完毕后再运行,此属性在H5这会儿已经是时代的眼泪了。

2.1.3 异步脚本

介绍async属性。

async只适用于外部脚本文件,指定async属性的目的是不让页面等待两个脚本的下载和执行,从而异步加载页面其他内容。因此,在异步脚本中不要再加载期间修改DOM。(异步脚本一定会在页面的load事件前执行,但可能会在DOMContentLoaded事件触发之前或之后执行)

2.1.4 在XHTML中的用法

时代的眼泪

2.4 <noscript>元素

当浏览器不支持JavaScript时显示替代的内容,在两种情况下出现:

  • 浏览器不支持脚本
  • 浏览器支持脚本,但脚本被禁用

第3章 基本概念

本章介绍ECMAscript的基础知识,适合快速阅览,查缺补漏。

  • ECMAScript有5种基本数据类型:

    • Undefined
    • Null
    • Boolean
    • Number
    • String

    typeof操作符能够返回一个数据的数据类型,其结果可能有:"undefined", "boolean", "string", "number", "object", "function"。

    eg.

    typeof('hello world!') // "string"
    复制代码
  • NaN,非数值。这是一个特殊的数值,类型为Number。NaN不与任何值相等,在于任何值比较时,都会返回false,如下

    alert(NaN == NaN) // false
    alert(1 > NaN) // false
    alert(1 < NaN) // false
    复制代码

    针对NaN的特点,ECMAScript定义了isNaN()函数,用于确定此参数是否“不是数值”。如下

    alert(isNaN(10)) // false
    alert(isNaN("10")) // false(可以被转化为数值10)
    alert(isNaN(NaN)) // true
    alert(isNaN('blue')) // true(不能转化为数值)
    alert(isNaN(true)) // false(可以被转换为数值1)
    复制代码

3.4.7 Object 类型

在ECMAScript中,Object类型是所有它的实例的基础,换句话说,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。

Object的每个实例都具有下列的属性和方法:

  • constructor:保存着用于创建当前对象的函数。
  • hasOwnProperty(propertyName):用于检查给定的属性在当前实例中(而不是在实例的原型中)是否存在,其中,作为参数的属性名(propertyName)必须以字符串形式指定(eg. o.hasOwnProperty("name"))
  • isPrototypeOf(object): 用于检查传入对象是否是另一个对象的原型
  • propertyIsEnumeralbe(propertyName): 用于检查给定的属性是否能够使用for-in语句来枚举。
  • toLocalString():返回对象的字符串表示,该字符串与执行环境地区对应
  • toString():返回对象的字符串表示
  • valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。

3.6.5 for-in语句

for-in语句是一种精准的迭代语句。可以用来枚举对象的属性。

/**
* 示例
* for (property in expression) statement
**/
for (var propName in window) {document.write(propName)
}
复制代码

如果表示要迭代的对象的变量值为null或undefined,在ECMAScript5版本以前,for-in语句会抛出错误,所以为了保证最大限度的兼容性,建议在for-in循环之前,先检测确认该对象的值不是null或undefined。

3.6.8 with语句

with语句的作用是将代码的作用域设置到一个特定的对象中,如果在局部环境中找不到该变量的值,就会查询在该特定对象中是否有同名的属性值。

在开发大型应用程序时,大量使用with语句会导致性能下降和给调试代码带来困难,并且在严格模式下会报错,因此不建议使用with。

/**
* 示例
* with (expression) statement
**/
with (location) {var qs = search.substring(1)var hostName = hostnamevar url = href
}
// 以上这段代码等同于下面的代码
var qs = location.search.substring(1)
var hostName = location.hostname
var url = location.href
复制代码

3.7函数

ECMAScript函数并不能像传统意义上那样实现重载,若同一个名字的函数被定义了两次,则后定义的函数会覆盖掉先定义的函数。

因此,只能通过检查传入函数中参数的类型和数量并作出不同的反应,可以模仿方法的重载。

3.7.1 理解参数

ECMAScript函数不介意传递进来多少个参数,因为在ECMAScript中的参数在内部使用一个数组来表示的。函数接收到的始终都死这个数组,而不关心数组中包含哪些参数(如果有参数的话)。实际上,在函数体内可以通过arguments对象来访问这个传参数组,从而获取传递给函数的每一个参数。同理,可以通过访问arguments对象的length属性可以获知有多少个参数传递给了函数。

红宝书(javascirpt高级程序设计)学习笔记(一)相关推荐

  1. JavaScript高级程序设计学习笔记(三)

    分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...

  2. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  3. javascript高级程序设计 学习笔记 第五章 上

      第五章   引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...

  4. 【Java高级程序设计学习笔记】深入理解jdk动态代理

    java的设计模式中有一项设计模式叫做代理模式,所谓代理模式,就是通过代理方来操作目标对象,而不是自己直接调用.代理又分为静态代理和动态代理,静态代理就是针对每个被代理对象写一个代理类,操作不够优雅: ...

  5. JavaScript高级程序设计--学习笔记(第六章)

    文章目录 第六章 面向对象的程序设计 1. 理解对象 1.1 属性类型 1.2 定义多个属性 1.3 读取属性的特性 2. 创建对象 2.1 工厂模式 2.2 构造函数模式 2.3 原型模式 2.4 ...

  6. JavaScript高级程序设计学习笔记--引用类型

    Object类型 对象字面量表示法: var person={ name:"Nicholas", age:29, 5:true }; 这人例子会创建一个对象,包含三个属性:name ...

  7. JavaScript高级程序设计学习笔记二(在HTML中使用JavaScript)

    在 HTML 中使用 JavaScript 在html中使用JavaScript脚本有两种方式一种是嵌入在HTML中的脚本,另一种是引入外部的脚本.两种方式都离不开<script>元素. ...

  8. AngularJS高级程序设计学习笔记(一)

    第一章:搭建开发环境 1:选择Chrome浏览器,给Chrome装调试angular的插件Batarang, 安装步骤: (1).从http://pan.baidu.com/s/1jGILtzg下载插 ...

  9. JavaScript高级程序设计学习笔记6:正则表达式

    一.正则表达式通过RegExp类实现,RegExp对象的构造函数可以带一个或两个参数.第一个参数(或只有一个参数)是描述需要进行匹配的模式字符串,如果还有第二个参数,这个参数则指定了额外的处理指令. ...

  10. javascript 高级程序设计学习笔记(面向对象的程序设计) 1

    Object构造函数或对象字面量都可以用来创建对象,但这些方式有个明显的缺点:使用相同一个接口创建很多对象,会产生大量重复代码. 工厂模式 //工厂模式function createDog (name ...

最新文章

  1. 通过微信企业号发送zabbix报警
  2. 2021年春季学期-信号与系统-第一次作业参考答案-第五题
  3. Hibernate源码阅读2——Service Registry
  4. ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
  5. Web开发融会贯通: 深入浅出 告别浮云
  6. NoClassDefFoundError: org/apache/flink/streaming/api/datastream/DataStream一例解决
  7. 【LeetCode笔记】剑指 Offer 15-. 二进制中1的个数 (Java、位运算)
  8. python3 def download_python3下载抖音视频
  9. Java实现HTML页面转PDF解决方案(转)
  10. mysql大表数据抽取_从云数据迁移服务看MySQL大表抽取模式
  11. CNN LeNet-5 AlexNet VGG简介
  12. Java面试个人简历
  13. 60分钟带你入门iOS开发
  14. 资源协调与跨部门沟通技巧
  15. Java蓝桥杯 算法提高 九宫格
  16. 机器学习 主成分分析(Principal Component Analysis)
  17. 利用重抽样获取mgcv包的广义可加模型函数曲线的可信区间(3)
  18. 毕业寄语 | 关于毕业季的温柔文案
  19. B站黑马Python笔记,打卡day3
  20. STM32单片机实现连接USB摄像头

热门文章

  1. matlab建模与仿真应用pdf,MATLAB建模与仿真应用教程 第2版
  2. android 强制更新用断点下载,Android断点下载小结
  3. MINIST数据集实践
  4. MATLAB机器学习决策树网格法优化参数学习笔记
  5. 数字电路基础知识——时序逻辑电路之存储器(SRAM、DRAM、ROM)
  6. 如何使用 OpManager 进行磁盘空间监控?
  7. java接口文档编写_java api接口文档怎么编写?
  8. 零基础入门微信小程序开发 (2020 版)
  9. 中断python快捷键_python的快捷键
  10. 计算机字符编码从0/1到UTF-8