javascript高级程序设计 第三版

网盘地址
提取码:vh81

笔记

第二章

2.1script标签

  • <script>元素属性:async、charset、defer、language、src、type
    async和defer只对外部脚本有效,language已废弃,type默认为“text/javascript”
  • defer属性可以让脚本在文档完全呈现之后再执行,且按照指定的顺序执行
  • 设置了async的脚本文件不一定按照书写顺序执行,所以文件间应该互不依赖;异步脚本会在页面的load事件前执行,但可能会在DOMContentLoaded事件触发前或后执行。支持异步脚本的浏览器有Firefox3.6,Safari5和Chrome。
  • 内嵌时,代码中任何地方不能出现"</script">字符串,否则会认为是结束,可以将字符串分隔两部分解决,如:alert<\/script>

2.3文档模式

  • 混杂模式和标准模式:两种模式主要影响CSS内容的呈现,某些情况也会影响到JavaScript的解释执行

2.4noscript标签

  • 浏览器不支持脚本或禁用脚本

第三章

3.1语法

  • 标识符:字母,下划线或美元开头,其他可以字母,下划线,美元或数字;字母也可以包含拓展的ASCII或Unicode字母字符,但不推荐
  • 严格模式:”use strict“

3.4数据类型

  • typeof:undefined、boolean、string、number、object、function
    safari5及之前版本和chrome7及之前版本对正则表达式用typeof会返回function,其他返回object
  • typeof对未初始化和未声明变量都返回undefined
  • undefined的值派生自null
  • Boolean()
  • 浮点值的内存空间是整数的两倍,所以ECMAscript会在不失时机地把浮点数转化为整数
  • Number.MAX_VALUE ,Number.MIN_VALUE ,Number.NEGATIVE_INFINITY ,Number.POSITIVE_INFINITY ,Infinity ,isFinite()
  • NaN:任何操作返回NaN,与任何值不等,包括自身
  • isNaN():适用对象,首先调用valueOf(),测试返回值是否可以转化为数值,如果不行,就基于返回值调用toString()方法,再测试返回值
  • Number()任何数据类型,parseInt(),parseFloat()适用字符串;一元加操作符与Number()函数相同,可区分十六进制数转化为十进制,空字符串为0,parseInt()空字符串为NaN,可传入第二个参数表示几进制;parseFloat()只解析十进制,如果是整数的数,会返回整数,可识别”3.125e7“
  • 字符串:
    1、特点:不可变,每次改变都会销毁原来返回新的
    2、toString(),字符串也有这个方法,但是null和undefined没有,可以穿参数,参数为基数,默认为10
    3、String(),如果有toString方法,调用它,没有,如果是null,返回”null“,是undefined,返回”undefined"
  • object
    1、属性和方法:Constructor;hasOwnProperty检查属性是否在当前对象中,参数要以字符串形式传入;isPrototypeOf检查传入对象是否是另一个对象的原型;propertyIsEnumerable,检查给定属性能否用for-in语句枚举,参数必须以字符串形式传入
    ;toLocaleString(),返回对象的字符串表述,该字符串与执行环境的地区对应;toString()返回对象的字符串表示;valueOf()返回对象的字符串、数值或布尔表示,通常与toString()返回值相同
  • ++,–除了可以作用在数字上,也可以作用在其他数据类型上,P57,需要先设定变量赋值为其他数据类型,然后再++或–,字符串时,字符串需要就是数值字符串
  • 一元加减操作符作用在非数值类型字符串
  • 位操作符,NaN和Infinity进行操作时都会被当成0,作用于非数值类型,会先Number()转换
    1、按位非~:操作数负值减一,比普通表达式快,因为是最底层操作
    2、按位与& 3、按位或| 4、按位异或^ 5、左移<<,不会影响符号位 6、有符号右移>>,符号位填充空缺 7、无符号右移>>>
  • 逻辑
    1、逻辑非 2、逻辑与,在操作数不是布尔值的情况下返回值就不一定是布尔值
  • 乘法,除法,求模
  • 加操作符:“sad”+10+5 -> sad105
  • 关系操作符P69
  • 逗号操作符
  • for-in循环对象如果为null或undefined就不会执行循坏体
  • lable标签
  • with语句,严格模式下不允许使用,大量使用会导致性能下降
  • switch语句如果缺少break,就会继续执行下一条case,default不用break,case的值不一定要常量,可以是变量或表达式,switch在进行比较时使用的是全等操作
  • return可以不带返回值,返回的是undefined
  • arguments与命名参数值保持同步

第四章

  • 不能给基本类型的值添加属性,如:var name="tom" ;tom.age=12 //undefined
  • 任何在内部应用call方法的对象在用typeof时返回function,不同浏览器对正则返回有所差别,确定值是哪种引用类型用instanceof
  • 延长作用域:try-catch,with
  • 垃圾收集:标记清除,引用计数(循环引用),性能问题(垃圾回收时间间隔)

第五章

数组

  • 通过对象字面量定义对象时,实际上不会调用object的构造函数
  • new Array()传入负数报错,也可不加new,在使用字面量表示法时不会调用Array构造函数,var arr = [1,2,]在不同浏览器中会有不同的项
  • 数组的length属性可以改变数组长度
  • 检测数组:
    instanceof问题:如果网页包含多个框架就存在多个全局执行环境,导致错误。
    isArray检测:IE9+,firefox4+,Safari5+,opera10.5+和chrome
  • 转换数组:toString()返回字符串,valueOf()返回数组
  • join()不传入值或undefined,用逗号分隔,IE7及更早会用"undefined“分隔,如果数组某项为null或undefined,使用join,toString,valueOf,toLocaleString会以空字符表示
  • 栈方法:push()返回长度,pop()返回弹出项
  • 队列方法:shift()返回第一项,unshift()返回长度,IE8及以下对unshift返回值有所不同
  • 重排序方法:
    1、sort()方法:每项toString()再进行比较,就算本来是数字;接受一个比较函数做参数,如果第一个参数应在第二个参数前就返回负数,相等0,之后正数;返回排序后数组,比较函数的参数为数组的两个值P132
    2、reverse(),返回排序后数组
  • 操作方法:
    1、concat():先创建副本再操作,不影响原数组
    2、slice():不影响原数组,不包含结束位置的项,结束位置小于初始位置返回空数组,参数为负数加上长度slice(-2,-1)等于slice(3,4)
    3、splice()返回从原数组中删除的项
  • 位置方法:indexOf(),lastIndexOf(),使用全等查找,没找到返回-1,找到返回位置;支持浏览器IE9+,Firefox2+,Safari3+,Opera9.5+和Chrome
  • 迭代方法:(val,index,arr)=>{}
    1、every(),函数对每一项都返回true,那就返回true
    2、filter(),返回该函数返回true的项组成的数组
    3、forEach(),对数组每项运行函数,没有返回值
    4、map(),对函数每项运行函数,返回结果数组
    5、some(),任意一项返回true,返回true
    以上方法都不会修改数组中的包含的值,支持浏览器IE9+,Firefox2+,Safari3+,Opera9.5+和Chrome
  • 缩小方法:迭代所有项,返回一个值
    1、reduce(),第一个值,当前值,当前下标,数组
    2、reduceRight()最后一项开始迭代
    支持浏览器IE9+,Firefox3+,Safari4+,Opera10.5+和Chrome

Date类型

1、Date.parse,Date.UTC;将表示日期的字符串传给构造函数也会调用Date.parse;UTC接受年月日…,其中月份基于0开始,只有年和月是必须的,构造函数传入第一个参数是数值时,会调用Date.UTC,但是日期和时间是基于本地时区创建的
2、Date.now(),支持浏览器IE9+,Firefox3+,Safari3+,Opera10.5+和Chrome,不支持的浏览器用+new Date()也可达到同样的目的
3、继承的方法,toLocaleString(),toString(),不同浏览器显示格式不同,valueOf()返回毫秒数,可以用比较操作符(大于或小于)来比较日期
4、日期格式化方法:toDateString,toTimeString,toLocaleDateString,toLocaleTimeString,toUTCString
5、日期方法


RegExp类型:

1、var exp = / pattern / flags
2、flags:g全局,i不区分大小写,m多行模式
3、元字符需要转义,传入RegExp构造函数的两个值需要为字符串
4、实例属性:global,ignoreCase,lastIndex,multiline,source
5、实例方法
exec(),接受要应用的字符串,返回数组,包含额外两个属性,index和input,数组第一项是匹配字符串,其他为捕获的字符串,全局模式的设置与否会改变多次测试的结果P126
test(),
toString和toLocaleString方法都会返回正则表达式的字面量,valueOf返回正则表达式本身
6、构造函数属性,Opera不支持短属性名,短属性名需要用方括号访问,九个用于存储捕获组的属性RegExp.$1等

Function类型

1、函数是对象,函数名是指针
var sum = new Function("num1","num2","return num1+num2; );//不推荐,会导致两次解析

2、没有重载
3、alert(sum(10,10));function sum(n1,n2){return n1+n2};可以正常显示20
4、函数内部属性:arguments,this,caller,arguments.callee。当全局环境中调用,caller的值为null,严格模式下callee和caller会有错误
5、函数属性和方法:length函数希望接受的命名参数的个数
6、严格模式下this值在未指定环境下调用,不会转为window,是undefined
7、call(),apply(),bind(),bind支持的浏览器IE9+,Firefox4+,Safari5.1+,Opera12+和Chrome
8、toLocaleString,toString,valueOf返回函数代码,格式不一定

基本包装类型

  • Boolean,Number,String
  • 读取模式访问字符串:创建String类型的实例,调用方法,销毁实例
  • 对基本包装类型调用typeof返回object
  • Object’构造函数会根据传入的值的类型返回相应基本包装类型的实例
var obj = new Object("new one");
alert("obj instanceOf String")      //true
  • Boolean重写了valueOf()方法,返回基本类型true或false,重写toString()方法,返回”true“或”false“
  • Number重写了valueOf,toString和toLocaleString方法,valueOf返回数值,其他两个返回字符串,toString可传入表示基数的参数
  • toFixed,按照指定的小数位返回数值的字符串表示,会四舍五入,IE8在传入0时会有问题
  • toExponential,返回指数表示法,传入小数位参数
  • toPrecision,返回合适的表达,可传入参数表示所有数字的位数(不包括指数部分),会根据数值选择调用 toFixed或toExponential
  • charAt,charCodeAt;IE8及其他浏览器支持[]方法索引字符
  • 字符操作方法:concat,slice,substr,substring,对原字符串都无影响。
  • slice和substring第二个参数指向最后一个字符后的一个位置,substr指定返回的字符个数;传入负数,slice加上字符串长度,substr会把第一个加长度,第二个变零,subtring会把第二个变0,IE9前substr传入负值存在问题
  • substring(3,0)会被自动转化为substring(0,3)
  • indexOf,lastIndexOf,两者都接受第二个值,表示从哪里开始
  • trim,IE9+,firefox3.5+,safari5+,opera10.5+,chrome;trimLeft和trimRight,firefox3.5+,safari5+,chrome8+
  • toLowerCase,toLocaleLowerCase,toUpperCase,toLocaleUpperCase
  • 模式匹配:match,本质与正则的exce相同,接受一个正则对象或正则表达式
    search,参数同上,找到返回下标,不然返回-1
    replace,第一个参数是正则或字符串,如果字符串,只替换一个,替换所有需要正则且g,如果第二个参数是字符串,可以为特殊字符,$&等;第二个参数也可以为函数
  • split返回数组,第一个参数可以是字符串或正则,第二个表示数组大小;不同浏览器在正则有捕获组或未匹配项是会有不同
  • localeCompare,formCharCode
  • HTML方法

Global对象

1、URL编码方法,encodeURI,encodeURIComponent,decodeURI,decodeURIComponent
2、eval方法,参数为要执行语句的字符串,eval中创建的变量和函数都不会提升;严格模式下会有一些限制
3、可用如下获取Globle对象

var gl = function(){return this;}()

Math对象

1、selectFrom,接受两个值,应该返回的最大最小值

第六章

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值