typeof操作符:返回字符串,可能是“undefined”,“boolean”,“ string”,“number”,“object”,“function”中的一种,所以不能判断数组。
NaN(Not a Number):用法NaN(val)如果val能被转化成一个数就返回false,否则返回true。
parseInt(val,way)其中way可以是2,4...就是要按照这个进制来转化,返回number类型,num.toString(way)同理,只不过返回string类型。
object类型有一个hasOwnProperty(name)来判断当前对象是在实例中还是原型中。
每个函数都有个arguments属性对象来记录它的参数,相当于一个参数的数组,用argumentscallee可以递归。
unshift方法可以从前端向数组推入两个元素并返回长度,用unshift和pop可以反向模拟队列。
sort(compare),其中compare(val1,val2)方法当val1在val2前面返回-1,后面返回,0好像是不变。
对数组操作用splice函数,splice(a1,a2,a3......)a1,a2必填a1表示起始位置,a2表示要删除的项数,后面的参数表示从该位置要插入的新值。
indexOf返回一个val在数组中的位置,lastindexOf()从后面开始数。
数组的迭代方法:every()每个值都返回true才返回true,filter()返回所有返回true元素的数组,forEach()只是运行函数,没有返回,map()返回函数调用结果组成的数组,some()与every相对,若有一个返回ture则返回true。
举例:var everyRes = number.every(function(item,index,array){return item>2 ;}) ;//item,index,array三个参数是必填的。
数组的归并:reduce和reduceRight(),举例:var sum = values.reduce(function(prev,cur,index,array){return prev+cur;}) ;prev代表前一个,cur代表后一个。
Date类型:var date = new Date(Date.parse("May 25,2004")); var date = new Date(Date.UTC(2015,4,5,17,55,50));
call和apply区别第一个是this(上下文对象)。
var obj =eval("("+data+")")来转化json,JSON.parse(data)也可以,两者的区别是eval相当于是把内容当做js来解析,而parse是只转化成obj对象。
与JSON.parse对应的是JSON.stringify方法,来把obj变成json
判读一个对象是不是数组:Object.prototype.toString.call(o) == '[object Array]' ;
如何用用continue跳出两层循环(对break也适用):
var num = 0 ; outer: for(var i=0;i<10;i++) for(var j=0;j<10;j++) { if(i==5&&j==5) { continue outermost ; } num++ ; } alert(num);//95
with语句:
var obj = { search : "st" , name : "lala", url : "www.123.com" } ; with(pbj){ var a = search ; var b = name ; var c = url ; }
用Object.defineProperty(obj,"key",{
configurable:true,
value:"value"
});这样可以让对象的属性只读。
用Object.defineProperties可以一次添加多个属性
Object.defineProperties(book,{ _year:{ value:2004 }, edition:{ value:1 }, year:{ get:function(){ return this._year ; } set:function(newValue){ if(newValue>2004) { this._year = newValue ; edition++ ; } } } } }) ;