第四章 变量/做用域和内存问题正则表达式
1.从一个变量给另外一个变量赋值时,若是是赋基本类型值,是建立一个值副本,两个变量操做互不影响。若是是赋引用类型值,是建立一个引用(指针)的副本。两个变量指向同一个对象,操做互相会影响。数组
2.函数传参时,若是传基本类型值,函数局部做用域修改值不会再全局做用域体现出来。传引用类型值,局部做用域修改对象会在全局做用域体现出来。P71浏览器
3.检测基本数据类型用typeof,检测引用类型值时,想知道是什么类型的对象,用instanceof。app
4.js没有块级({})做用域,一个function里的变量都是透明的。dom
5.确保占用最少的内存可让页面得到更好的性能。而优化内存占用最好的方式,是为全局变量和全局对象的属性解除引用——再也不用时将值设置为null。函数
第五章 引用类型性能
1.引用类型有Object、Array、Date、RegExp、Function(函数其实是实例)、基本包装类型(Boolean、Number、String)、Global、Math。优化
2.全部对象都具备toLocaleString(),toString(),valueOf()方法。this
3.引用类型Object的表示方法有两种:编码
1 //构造函数方法 2 var person = new Object(); 3 person.name = "xiaoming"; 4 person.age = 29; 5 6 //对象字面量方法 7 var person = { 8 name : "xiaoming", 9 age : 29 10 };
4.引用类型Array每一项能够保存不一样类型的数据,它的表示方法有两种:
1 //构造函数方法 2 var color = new Array(); 3 var color = new Array(3); 4 var color = new Array("red","blue","green"); 5 6 //数组字面量 7 var color = []; 8 var color = ["red","blue","green"];
5.数组的各类方法:
转换方法:toString()返回数组用逗号拼接的字符串
join()返回用指定符号拼接的数组的字符串
栈方法:push()尾部插项,返回数组长度,
pop()尾部删项,返回被删项。
队列方法:shift()头部删项,返回被删项,
unshift()头部插项,返回数组长度。
排序方法:reverse()反转数组,
sort()默认按字符比较方法排序,能够加比较函数。P93
操做方法:concat()将两个数组合并,返回新数组,不改变原来数组
slice()取数组指定下标的一部分,返回新数组,不改变原来数组
splice(a,b,c....)在a位置上开始删除b个数,并将c...等插进a的位置,返回的是被删除的数的数组,改变原来的数组。
位置方法:indexOf()返回指定值的下标
lastIndexOf()从末尾往前找,但下标仍是从头开始数
迭代方法:every()设置回调函数,若是每项都符合条件,返回true
some()设置回调函数,若是有一项符合条件,返回true
filter()设置回调函数,返回符合条件的项的新数组
map()设置回调函数,对全部项执行相同操做,返回新数组
forEach()设置回调函数,遍历数组,返回结果
(回调函数参数都是value,index,array)
归并方法:reduce()设置回调函数,对数组项进行迭代,返回结果。
reduceRight()设置回调函数,从末尾开始迭代。
(回调函数参数都是previous,current,index,array)
6.RegExp类型能够用字面量定义,也能够用构造函数定义(双重转义)
7.RegExp类型的方法:exec()和test()
8.函数名仅仅是指向函数对象的指针,函数定义方法有两种:
1 //函数声明 2 function sum(a,b){ 3 return a+b; 4 } 5 6 //函数表达式 7 var sum = function(a,b){ 8 return a+b; 9 };
9.函数名只是函数类型的一个变量,声明两个同名函数只是将变量替换,所以函数没有重载,也所以函数能够做为值经过函数名这个变量被传递和返回。
10.函数内部有两个对象:arguments和this
arguments是函数参数数组,arguments.callee指向函数。
this指向当前执行的环境对象。
11.函数做为对象,有本身的属性和方法。
属性:length命名参数的个数。
prototype保存全部实例的方法。
方法:apply()和call()功能同样,区别在于函数第二个参数call是逐个列出参数,apply可使用数组。这两个函数的重要做用是扩充函数做用域。P117和P114的栗子
bind()绑定(手动指定)函数的做用域。
12.基本包装类型不建议显式建立(使用new),在建立使用相应的基本类型值时,后台会自动建立相应的基本包装类型。
13.基本包装类型String方法:
字符方法:charAt()返回指定位置的字符
可使用[]像数组同样访问字符
charCodeAt()返回指定位置字符的编码
操做方法:concat()将多个字符串拼接起来,返回新字符串
slice()返回指定范围的子字符串。传入负数时,将负数和原字符串长度相加
substr()返回指定起点和长度的子字符串。传入负数时,将第一个参数加上字符串长度,第二个参数变为0.
substring()返回指定范围的子字符串。传入负数时,将参数变为0
位置方法:indexOf()返回指定子字符串的位置,没匹配返回-1
lastIndexOf()返回指定子字符串的位置,从后往前搜索,下标仍是从头数
trim()返回字符串的副本,删除前置和后缀全部空格
大小写转换方法:toLowerCase(),toLocaleLowerCase(),toUpperCase(),toLocaleUpperCase()
模式匹配方法:match()传入正则表达式,返回匹配项和捕获组匹配项的数组
search()传入正则表达式,返回第一个匹配项的位置,没匹配返回-1
replace()用字符串替换原字符串的部分。返回新字符串
split()将字符串按特定字符分割成字符串数组
localeCompare()方法:传入字符串,比较参数字符串和原字符串,若是原字符串在字母表排在前面,返回负数,相等返回0,不然返回正数。
fromCharCode()方法:传入一个或多个字符编码,返回字符串。
14.Global对象,是单体内置对象,自己就存在,不用手动实例化。浏览器将这个全局对象做为window对象的一部分加以实现。例如Object、Array、String、Global、Math。
URI编码方法:encodeURI(),encodeURIComponent(),decodeURI(),decodeURIComponent()
eval()方法
15Math对象,相关方法:min(),max(),ceil(),floor(),round(),random()...