1、基本数据类型:null undefined Boolean string number 保存在栈内存中;
引用数据类型的值是对象:实际上保存在堆内存中。首先从栈中获得该对象的地址指针,然后再从堆内存中取的所需数据。
2、对象的深拷贝和浅拷贝
3、Date类型:可以比较两个Date对象的大小(时间靠前的更小);
Date对象的方法:toDateString():星期 月 日 年
toTimeString():时分秒 时区
getFullYear() getMonth() getDate() getDay() getHours() getMinutes() getSeconds()
4、RegExp对象:(正则)
例:
var re = new RegExp('cat','g');
re.test('category');//会返回true
5、Function类型:是指针,一个函数可以有多个名字。
6、this:引用的是函数执行的环境对象。
例:
window.color = 'red';
var o = {color:'blue'};
function sayColor(){
alert(this.color);
}
o.sayColor = sayColor;
o.sayColor();//不能直接调用o.sayColor()
7、function中的callee属性(arguments的属性)和caller属性(function的属性)的区别:
callee是一个指针,指向当前方法;
caller是一个指针,指向调用当前方法的方法。(上一层) 不能为caller属性赋值
例:
function outer(){
inner();
}
function inner(){
alert(inner.caller);//这里会显示outer的方法代码。调用inner的是outer,也可以写成是arguments.callee.caller
}
outer(); //
8、apply()和call()方法,以及bind()方法:
这两个方法的用途:都是在特定的作用域中调用函数====》设置函数体内this对象的值
apply()方法:两个参数,第一个参数是在其中运行函数的作用域,第二个参数是一个参数数组,可以是Array实例,也可以是arguments。
call()方法:和apply()方法十分相似,传值方式不同,传值用逗号分隔。
bind()方法:这个方法会创造一个实例,实例中的this值会被绑定为bind中的参数。
例:
var o = {a:1,b:1};
function hehe(){
console.log(this.a);
}
var afterBind = hehe.bind(o);
afterBind();
9、基本包装类型:Boolean、Number、String 这三种类型,除了是基本类型之外,作为引用类型,可以扩展操作方法。引用类型和基本包装类型的主要区别是“对象的生存期”:引用类型的实例在执行流离开当前作用域之前都一直保存在内存中;而自动创建的基本包装类型,只存在于一行代码的执行瞬间,然后被立即销毁。(所以,不能在运行时为基本类型值添加属性或方法)
这里有个比较奇特的点:对基本包装类型的实例调用typeof会返回‘object’,而且所有基本包装类型的对象在转换为布尔类型时,值都是true。
var str = '';
Boolean(str)//false
typeof(str);//String
var str =new String('');
Boolean(str)//true
typeof(str);//Object
10、字符串和数值的互相转化:
字符串——》数值:如果第一个参数不是'-'(负号)或者数字,返回NaN
Number(); 将十、十六进制数,转化为十进制数
parseInt(); 解析八、十、十六进制数,可以指定第二个参数,意为:我想要解析的是‘几’进制的。
parseFloat(); 只解析十进制
数值——》字符串:
num.toString():可以传参来控制将十进制转化为几进制。例:
var num = 10;
num.toString()//'10'
num.toString('2')//'1010'
num.toExponential():传入的值是保留几位小数,然后转化为指数形式
num.toPrecision():标识某个数值最合适的格式,可能是固定大小的格式,也可能是指数形式的格式。