js 高级程序设计(笔记)
第二章
1.为了避免浏览器在呈现页面时出现明显的延迟,现代Web 应用程序一般都把全部JavaScript 引用放在<body>元素中页面内容的后面。
第三章
1.ECMAScript 中有5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number
和String。还有1 种复杂数据类型——Object。
2.位于null 和undefined 之间的相等操作符(==)总是返回true。
3.alert(NaN == NaN); //false
4.有3 个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。
5.加法操作符(+)如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来。
6.操作符:
一元操作符,位操作符,布尔操作符,乘性操作符,加性操作符,关系操作符,相等操作符,条件操作符,赋值操作符,逗号操作符。
7.相等和不相等——先转换再比较,全等和不全等——仅比较而不转换。
8.for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。
9.在函数体内可以通过arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。命名的参数只提供便利,但不是必需的。arguments的值永远与对应命名参数的值保持同步,它们的内存空间是独立的。
第四章
1.基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。
2.ECMAScript 中所有函数的参数都是按值传递的。
3.在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即命名参数,或者用ECMAScript 的概念来说,就是arguments 对象中的一个元素)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。
4.执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念。在Web 浏览器中,全局执行环境被认为是window 对象。
5.作用域链:作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。
6.作用域链的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象(activation object)作为变量对象。活动对象在最开始时只包含一个变量,即arguments 对象(这个对象在全局环境中是不存在的)。作用域链中的下一个变量对象来自包含(外部)环境,而再下一个变量对象则来自下一个包含环境。这样,一直延续到全局执行环境;全局执行环境的变量对象始终都是作用域链中的最后一个对象。
*7.内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。
8.如果初始化变量时没有使用var 声明,该变量会自动被添加到全局环境。
9.JavaScript 具有自动垃圾收集机制
9.1.标记清除
当变量进入环境时,就将这个变量标记为“进入环境”,而当变量离开环境时,则将其标记为“离开环境”。
9.2.引用计数
跟踪记录每个值被引用的次数。
10.一旦数据不再有用,最好通过将其值设置为null 来释放其引用——这个做法叫做解除引用。
第五章
1.第一种是使用new 操作符后跟Object 构造函数,另一种方式是使用对象字面量表示法。
2.但方括号语法的主要优点是可以通过变量来访问属性。
3.join()方法,则可以使用不同的分隔符来构建这个字符串。
4.push(),pop(),shift(),unshift(),reverse(),sort()
5.concat(),slice(),splice(),indexOf(),lastIndexOf(),reduce(),reduceRight()
6.Date
至于Date 类型的valueOf()方法,则根本不返回字符串,而是返回日期的毫秒表示。因此,可以方便使用比较操作符(小于或大于)来比较日期值。
一系列方法:getTime(),getFullYear(),getMonth(),getDate(),getDay(),setHours(时),getMinutes(),getSeconds(),set方法跟get对应。
7.正则表达式
g:表示全局(global)模式,i:表示不区分大小写(case-insensitive)模式,m:表示多行(multiline)模式
exec() index 表示匹配项在字符串中的位置,而input 表示应用正则表达式的字符串。在数组中,第一项是与整个模式匹配
的字符串,其他项是与模式中的捕获组匹配的字符串。
test() 在模式与该参数匹配的情况下返回true;否则,返回false。
8.函数
函数实际上是对象。每个函数都是Function 类型的实例,而且都与其他引用类型一样具有属性和方法。由于函
数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。
没有重载
解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。
可以从一个函数中返回另一个函数,而且这也是极为有用的一种技术,回调。
有两个特殊的对象:arguments 和this。callee 的属性,该属性是一个指针,指向拥有这个arguments 对象的函数。
this引用的是函数据以执行的环境对象——或者也可以说是this 值(当在网页的全局作用域中调用函数时,this 对象引用的就是window)。
caller :这个属性中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为null
length 和prototype
apply()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this 对象的值。首先,apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。call的参数必须逐个列举出来。
使用call()(或apply())来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。
bind()会创建一个函数的实例,其this 值会被绑定到传给bind()函数的值。
9. 3 个特殊的引用类型:Boolean、Number 和String。
Number:toFixed()方法会按照指定的小数位返回数值的字符串表示
String:valueOf()、toLocale-String()和toString()方法,charAt(),charCodeAt(),concat(),slice()、substr()和substring(),indexOf()和lastIndexOf()(如果没有找到该子字符串,则返回-1),toLowerCase()和toUpperCase(),toLocaleLowerCase()和toLocaleUpperCase(),match(),search(),replace(),split(),localeCompare(),fromCharCode()。
10.单体内置对象
Global对象
eval() 通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链。
window 对象 ECMAScript 虽然没有指出如何直接访问Global 对象,但Web 浏览器都是将这个全局对象作为window 对象的一部分加以实现的。
Math对象 min(),max(),Math.ceil()、Math.floor()和Math.round(),Math.random()方法返回大于等于0 小于1 的一个随机数。
第六章 面向对象
1.数据属性和访问器属性
2.数据属性 [[Configurable]]
js 高级程序设计(笔记)的更多相关文章
- js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定
js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener( ...
- JS高级程序设计 笔记
1.instanceof 可以判断实例是否在某个对象的原型上: function A() { this.a = "a"; } function B() { this.b = &qu ...
- JS高级程序设计--笔记
1.JS分三个部分:ECMAScript.DOM.BOM 1)ECMAScript:提供核心语言功能 2)DOM:提供访问和操作网页内容的方法和接口 3)BOM:提 ...
- js高级程序设计 笔记 --- 错误处理、json和ajax
1,错误处理 1,try-catch语句 try{可能导致错误的代码} catch(error) {在错误发生时该怎么处理} error.message是所有浏览器都支持的属性. finally语句是 ...
- js高级程序设计 笔记 --- 表单
一,基础知识 在html中,表单是form元素,而在js中,表单对应的是HTMLFormElement类型,继承自HTMLElement,其独特的属性和方法有(常见): action:接收请求的URL ...
- js高级程序设计 笔记 --- DOM
DOM是针对HTML和XML文档的一个API.DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 1,节点层次 DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的 ...
- js高级程序设计 笔记 --- 面向对象的程序设计
1,理解对象 通过对象字面量的方式,创建一个对象,为它添加属性和方法: var obj = { a: 1, b:2, sayA(){ console.log(this.a)}} 1,属性类型: 数据属 ...
- js高级程序设计 笔记 --- 引用类型
一,变量和作用域 1, js变量可以保存两种类型,基本类型.引用类型和symbol类型,基本类型有5种:undefined.null.boolean.number.string,它们都有以下的特征 基 ...
- JS高级程序设计笔记一
/*设置自定义属性*/ var div=document.querySelector("#div1"); div.setAttribute("title",&q ...
- 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图
读书笔记 - js高级程序设计 - 第十三章 事件 canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺 ...
随机推荐
- 编写程序,输入一个N,返回角谷变换(达到1所需)的次数
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 17:36 * @description ...
- MySQL 5.7 安装指南
1.下载1)进⼊入官⽹网下载5.7.23压缩包 下载地址:https://dev.mysql.com/downloads/mysql /5.7.html#downloads 2.安装与配置 1)将下载 ...
- JS实现数组去重方法大总结
js数组根据对象中的元素去重: var arr2 = [ { name: "name1", num: "1" }, { name: "name2&qu ...
- 免费申请使用IBM Cloud Lite(轻量套餐) 详细教程指南
注册轻量帐户可在 IBM CLOUD控制台中使用所选的显示有轻量标记的免费轻量套餐来构建应用程序和探索服务.轻量帐户不会到期,也无需信用卡. 本文详细的介绍了一下,免费云服务的申请以及使用!这次使用I ...
- [Swift]LeetCode313. 超级丑数 | Super Ugly Number
Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all ...
- [Swift]LeetCode1026. 节点与其祖先之间的最大差值 | Maximum Difference Between Node and Ancestor
Given the root of a binary tree, find the maximum value V for which there exists different nodes A a ...
- oracle 合并多个sys_refcursor
一.背景 在数据开发中,有时你需要合并两个动态游标sys_refcursor. 开发一个存储过程PROC_A,这个过程业务逻辑相当复杂,代码篇幅较长.一段时间后要开发一个PROC_B,要用PROC_A ...
- iOS学习——Quartz2D学习之UIKit绘制
iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...
- 完整的http请求分析
首先我们要明白什么是http. http:超文本传输协议(HTTP,HyperText Transfer Protocol). 超文本传输协议是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必 ...
- 运行PHP后台项目:xampp下载,安装,配置,运行PHP的web项目
本来没有想着弄PHP,但是有同学叫我帮忙启动一下一个PHP写的后台.着实需要去学习一下. 想着安装xampp软件,一个集合了多个服务器,多个数据库,多个后台语言的管理软件. 一.xampp下载 二.安 ...