一,call()和apply()
这两个方法都是函数对象的方法,需要通过函数对象来调用,当对函数调用call和apply都会调用函数执行,在调用这两个方法的时候,可以将第一个对象指定为第一个参数,此时这个对象会成为函数执行时候的this,改变当前执行的对象。
call方法可以将实参在对象之后依次传递。fun.call(obj,2,3);
apply方法需要将实参封装在数组中统一传递。fun.apply(obj,[2,3]);
this情况:
(1)以函数形式调用时候,this永远是window
(2)以方法形式创建时,this是调用方法的对象
(3)以构造函数的形式调用时候,this是新创建的那个对象
(4)使用call和apply调用时,this是指定的那个对象
二,arguments
在调用函数时候,浏览器每次都会传递两个隐含的参数
(1)this
(2)arguments(类数组对象),也可以通过索引操作数据,也可以获取长度
argumnets.length用来获取实参的长度
即使不定义形参,也可以通过arguments定义实参。
(3)arguments里有一个属性callee,就是当前正在指向的函数的对象
三,Date
JS中表示时间
//创建一个Date对象,如果在构造函数中创建一个Date对象,则会封装为当前代码执行的时间。
var d=new Date();
console.log(d);
//创建一个指定时间的对象
//日期格式:月/日/年 时:分:秒
var d2=new Date("12/03/2016 11:10:30");//月日年
console.log(d2);
相关的方法:
var date=d2..getDate();//获取当前日期是几号
var day=d2.getDay();//当前日期是周几
var month=d2.getMonth();//当前月份
var tear=d2.get FullYear();//返回年份
var time=d2.getTime();//获取时间戳,从1970年格林威治标准时间,一月一日零时零分零秒开始算ms(1s=1000ms)
计算机底层保存时间用的都是时间戳
time=Date.now();//结果是执行当前行对应的时间戳
四,Math
Math.PI;//圆周率
Math.abs();//绝对值
Math.ceil(1.4);//向上取整
Math.floor(1.4);//向下取整
Math.round(1.4);//四舍五入
Math.random();//生成一个[0,1)之间的随机数
Math.max(10,11,20);//取最大值
Math.min(11,90,8);//最小值
Math.pow(12,3);12的3次幂
Math.sqrt(12);12开方
五,包装类
String()将基本数据类型转为String
Number()将基本数据类型转为Number
Boolean()将基本数据类型转为Boolean
str.charAt(i);//返回任意位置字符
str.charCodeAt();//返回指定位置字符Unicode编码
formCharCode();//根据字符编码获取字符
concat();//连接两个或多个字符串
str.indexof("h");返回str第一次出现h的索引,没找到返回-1
str.indexof("h",2);//从下标为2处开始查找
str.lastindexof("h");//从后往前遍历寻找第一个出现的
str.lastindexof("h",2);//从下标为2处开始查找
str.slice(0,2);//不会影响源字符串,左闭索引右开索引,第二个参数省略,则会截取到后面的所有。
如果传递一个负数,则会从后往前查
substring(1,2);//截取字符串,左闭右开,和slice类似。不同的是这个方法不能接受负值,负值相当于0
如果前后大小反了,系统会自动调整
substr(0,2);//两个参数分别是截取位置的索引,截取个数
split(",");//将字符串根据“,”拆分成数组。如果将空串作为拆分参数,则会将每个字符都拆分为数组中的一个元素
toUpperCase();//变大写字串;