JavaScript引用类型
引用类型 赋值是变量指针的赋值,不是真正的值的拷贝,修改会相互干预
1.Object类型
创建object实例的方式有两种,一种是使用New操作符后跟Object构造函数
另一种是使用对象字面量表示法
//第一种
var person = new Object();
person.name="Nicholas";
person.age=29;
//第二种
var person={
name: "Nicholas",
age:29
};
2.Array类型
创建数组的方式有两种,一种是使用Array构造函数
另一种是使用数组字面量表示法
var colors = new Array(20);
var names=[];
数组的length
属性,可以从数组的末尾移除项或向数组中添加新项。
2.1检测数组
instanceof
Array.isArray(value)
Object.prototype.toString.call(obj)
2.2转换方法
toString()
返回字符串
valueOf()
返回数组本身
toLocaleString()
join()
2.3添加移除
push()
数组末尾接受任意数量,并返回修改后的数组长度
pop()
数组末尾移除最后一项,减少length值,返回移除的项
shift()
移除数组第一项,并返回该项,数组长度减一
unshift()
数组前面添加任意个项并返回新数组长度
push与pop栈
push与shift队列
unshift与pop反向队列
2.4重排序
reverse()
反转
sort()
排序 默认为字符串从小到大排序, a-b从小到大,b-a从大到小 arr本身也被排序
2.5操作方法
concat()
创建当前数组一个副本,然后将接收到的参数添加的这个副本的末尾,返回构建的新数组。不传参则返回当前数组的副本。
var colors=["red","blue","green"];
var colors2=colors.concat("yello",["grey","black"]);//"red","blue","green","yello","grey","black"
slice(start, end)
接收一个或两个参数,但不返回结束位置的项,不会影响原数组
splice(起始位置,删除的项数,要插入的项)
,删除、插入、替换
var colors=["red","blue","green"];
var removed=colors.splice(0,1);//colors删除前一项,removed为返回的删除的项
removed=colors.splice(1,0,"yellow","purple");//colors从1位置插入两项,removed为返回的空数组
removed=colors.splice(1,1,"red","orange");//colors从1位置删除1项,插入两项,removed为返回的删除项
2.6位置方法
indexOf()
从数组开头向后查找
lastIndexOf()
从数组末尾开始向前查找
返回查找项在数组中的位置,没有则返回-1
2.7迭代方法
every()
返回true/falsefilter()
返回true的项组成的数组forEach()
没有返回值map()
返回每次函数调用的结果组成的数组some()
返回true/false
归并方法
reduce()
reduceRight()
var values=[1,2,3,4,5];
var sum=values.reduce(function(pre,cur,index,array){
return pre+cur;
});
arr.reduce(callback,[initialValue])
arr.reduce(callback,[initialValue])
-
callback (执行数组中每个值的函数,包含四个参数)
previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue)) currentValue (数组中当前被处理的元素) index (当前元素在数组中的索引) array (调用 reduce 的数组)
-
initialValue (作为第一次调用 callback 的第一个参数。)
https://segmentfault.com/a/1190000010731933
3.Date类型
var now=new Date();//当前日期
//指定日期
var someDate=new Date(Date.parse("May 25, 2004"));
var someDate=new Date("May 25, 2004");//等价
var sd=new Date(Date.UTC(2005, 4, ,5, 17, 55, 55));//2005年5月5日17:55:55 月份为从0开始
toLocaleString()
toString()
以上不同浏览器格式不同
valueOf()
返回日期的毫秒表示,可比较大小来比较日期值
4.RegExp类型
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
reg.test(str);
存在则返回truereg.exec(str);
str.search(reg);
str.match(reg);
以找到一个或多个与RegExp匹配的文本str.split(reg);
str.replace(reg, '...');
5.Function类型
fn.apply(this, arguments);
fn.call(this,num1,num2);
fn2=fn1.bind(o);
6.基本包装类型
6.1boolean类型
6.2Number类型
toString();
传递一个表示基数的参数,返回几进制数值的字符串形式
toFixed();
按照指定的小数位返回数值的字符串表示
toExponential();
返回以指数表示法1.0e+1
toPrecision();
返回小数位表示或指数表示
6.3String类型
6.3.1 字符方法
charAt();
返回给定位置的字符
carCodeAt();
返回给定位置的字符编码
6.3.2字符串操作方法
str1.concat(str2,str3);
将一个或多个字符串拼接起来,一般用+
slice(start, end);
substr(start, n);
substring(start, end);
对原始字符串没有影响
6.3.3字符串位置方法
indexOf();
lastIndexOf();
6.3.4trim方法
trim();
创建字符串的副本,删除前置及后缀的所有空格,原字符串不变
6.3.5字符串大小写转换方法
toLowerCase();
toUpperCase();
6.3.6
localeCompare();
fromCharCode();
接受一个或多个字符编码,将它们转成一个字符串
7.单体内置对象(Object、Array、String、Global、Math)
7.1Global对象
所有在全局作用域中定义的属性和函数,都是Global对象的属性
Global对象方法:isNaN()
、isFinite()
、parseInt()
、parseFloat()
-
encodeURI();
用于整个URI,只对空格进行编码 -
encodeURIComponent();
用于URI中的某一段进行编码,对所有非字母数字字符编码 -
decodeURI();
-
decodeURIComponent();
-
eval();
接收字符串参数,解析器,执行字符串表示的语句
属性 | 说明 | 属性 | 说明 |
---|---|---|---|
undefined | 特殊值undefined | Date | 构造函数Date |
NaN | 特殊值NaN | RegExp | 构造函数RegExp |
Infinity | 特殊值infinity | Error | 构造函数Error |
Object | 构造函数Object | EvalError | 构造函数EvalError |
Array | 构造函数Array | RangeError | 构造函数RangeError |
Function | 构造函数Object | ReferenceError | 构造函数ReferenceError |
Boolean | 构造函数Boolean | SyntaxError | 构造函数SyntaxError |
String | 构造函数String | TypeError | 构造函数TypeError |
Number | 构造函数Number | URIError | 构造函数URIError |
window对象
在全局作用域中声明的所有变量和函数,都是window对象的属性
7.2Math对象
7.2.1Math对象的属性
Math.E
自然对数的底数
Math.LN10
10的自然对数
Math.LN2
2的自然对数
Math.LOG2E
以2为底e的对数
Math.LOG10E
以10为底e的对数
Math.PI
Math.SQRT1_2
1/2的平方根
Math.SQRT2
2的平方根
7.2.1Math对象的方法
min()
max()
ceil()
向上舍入
floor()
向下舍入
round()
四舍五入
random()
随机数
function selectFrom(lower,upper){
var choices=upper-lower+1;
return Math.floor(Math.random()*choices+lower);
}
var num=selectFrom(2,10);//介于2和10之间的一个数值(包括2和10)
abs(num)
exp(num)
log(num)
pow(num,power)
sqrt(num)
acos(x)
asin(x)
atan(x)
atan2(y,x)
cos(x)
sin(x)
tan(x)
《JavaScript高级程序设计》