红宝书(javascirpt高级程序设计)学习笔记(一)
资料下载地址(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个属性- async 可选 表示异步下载脚本,不妨碍页面的其他操作,只对外部脚本文件有效
- chartset 可选 表示通过src属性指定的代码字符集,该属性的值会被大多数浏览器忽略(少用)
- defer 可选 表示监本可以延迟到文档完全被解析和显示之后再执行
- language 已废弃
- src 可选 表示包含要执行代码的外部文件
- 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高级程序设计)学习笔记(一)相关推荐
- JavaScript高级程序设计学习笔记(三)
分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- javascript高级程序设计 学习笔记 第五章 上
第五章 引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...
- 【Java高级程序设计学习笔记】深入理解jdk动态代理
java的设计模式中有一项设计模式叫做代理模式,所谓代理模式,就是通过代理方来操作目标对象,而不是自己直接调用.代理又分为静态代理和动态代理,静态代理就是针对每个被代理对象写一个代理类,操作不够优雅: ...
- JavaScript高级程序设计--学习笔记(第六章)
文章目录 第六章 面向对象的程序设计 1. 理解对象 1.1 属性类型 1.2 定义多个属性 1.3 读取属性的特性 2. 创建对象 2.1 工厂模式 2.2 构造函数模式 2.3 原型模式 2.4 ...
- JavaScript高级程序设计学习笔记--引用类型
Object类型 对象字面量表示法: var person={ name:"Nicholas", age:29, 5:true }; 这人例子会创建一个对象,包含三个属性:name ...
- JavaScript高级程序设计学习笔记二(在HTML中使用JavaScript)
在 HTML 中使用 JavaScript 在html中使用JavaScript脚本有两种方式一种是嵌入在HTML中的脚本,另一种是引入外部的脚本.两种方式都离不开<script>元素. ...
- AngularJS高级程序设计学习笔记(一)
第一章:搭建开发环境 1:选择Chrome浏览器,给Chrome装调试angular的插件Batarang, 安装步骤: (1).从http://pan.baidu.com/s/1jGILtzg下载插 ...
- JavaScript高级程序设计学习笔记6:正则表达式
一.正则表达式通过RegExp类实现,RegExp对象的构造函数可以带一个或两个参数.第一个参数(或只有一个参数)是描述需要进行匹配的模式字符串,如果还有第二个参数,这个参数则指定了额外的处理指令. ...
- javascript 高级程序设计学习笔记(面向对象的程序设计) 1
Object构造函数或对象字面量都可以用来创建对象,但这些方式有个明显的缺点:使用相同一个接口创建很多对象,会产生大量重复代码. 工厂模式 //工厂模式function createDog (name ...
最新文章
- 通过微信企业号发送zabbix报警
- 2021年春季学期-信号与系统-第一次作业参考答案-第五题
- Hibernate源码阅读2——Service Registry
- ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
- Web开发融会贯通: 深入浅出 告别浮云
- NoClassDefFoundError: org/apache/flink/streaming/api/datastream/DataStream一例解决
- 【LeetCode笔记】剑指 Offer 15-. 二进制中1的个数 (Java、位运算)
- python3 def download_python3下载抖音视频
- Java实现HTML页面转PDF解决方案(转)
- mysql大表数据抽取_从云数据迁移服务看MySQL大表抽取模式
- CNN LeNet-5 AlexNet VGG简介
- Java面试个人简历
- 60分钟带你入门iOS开发
- 资源协调与跨部门沟通技巧
- Java蓝桥杯 算法提高 九宫格
- 机器学习 主成分分析(Principal Component Analysis)
- 利用重抽样获取mgcv包的广义可加模型函数曲线的可信区间(3)
- 毕业寄语 | 关于毕业季的温柔文案
- B站黑马Python笔记,打卡day3
- STM32单片机实现连接USB摄像头
热门文章
- matlab建模与仿真应用pdf,MATLAB建模与仿真应用教程 第2版
- android 强制更新用断点下载,Android断点下载小结
- MINIST数据集实践
- MATLAB机器学习决策树网格法优化参数学习笔记
- 数字电路基础知识——时序逻辑电路之存储器(SRAM、DRAM、ROM)
- 如何使用 OpManager 进行磁盘空间监控?
- java接口文档编写_java api接口文档怎么编写?
- 零基础入门微信小程序开发 (2020 版)
- 中断python快捷键_python的快捷键
- 计算机字符编码从0/1到UTF-8