常用的js方法:
1,push() 会修改原来的数组,在最后的位置添加新元素。
2,pop()方法可以删除最后一个函数。
3,slice() 浅拷贝 slice(start,end)不包括end这个元素! 利用浅拷贝可以不修改原来的数组,返回新数组
push() +slice() 不修改原数组同时从最后添加元素。
pop() +slice() 不修改原数组同时从最后删除元素。
4,concat() 连接两个或多个数组。[item].concat(arr); 表示在arr前加入item.该方法不修改原数组,只会返回一个副本。
5,reverse() 反转数组
6,splice() splice(index,howmany, item ) 用于添加或删除数组中的元素
howmany设置为0则不会删除元素。
7,forEach() 用于调用数组的每个元素,并将元素传递给回调函数。
arr.forEach(function(e){
result.push(function(num){
}(e));
});
e是每次循环的数组元素。
8, 在Javascript语言中,声明变量使用的都是关键字var,如果不使用var而直接声明变量,则该变量为全局变量。
9,parseInt(string,radix) radix指定进制(1,8,10,16) 如果radix的值为0,那么会按照输入的string来进行对应的转换:如0x开头的 会解析为16进制 0开头的会解析为8进制 1-9开头的会解析为10进制。
10,setInterval() 会按照指定周期不停地调用函数,直到clearInterval被调用或者窗口被关闭。由setInterval返回的ID值(对象、方法名),可用作clearInterval的属性。
var timer = setInterval(function(){},100);
11,success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () { }
// 用户取消分享后执行的回调函数
12,如果参数为空或者不是 Number 类型,返回 false
if((num == null) || (typeof num != 'number')) {return false;}
13,函数传参:使用.call() .apply()
function argsAsArray(fn, arr) {
return fn.apply(this, arr);
}
而apply方法第一个参数,是要替代的对象。没有要替代的,用null,也是很自然的。
fn.apply(null,args)
this指的是当前函数的对象。
fn.apply(this,args);
例如:Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args–>arguments)
14,
在JavaScript中,函数是一种对象,其上下文是可以变化的,对应的,函数内的this也是可以变化的,函数可以作为一个对象的方法,也可以同时作为另一个对象的方法,可以通过Function对象中的call或者apply方法来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数。将函数 fn 的执行上下文改为 obj 对象,只需要将obj作为call或者apply的第一个参数传入即可。
function speak(fn, obj) {
return fn.apply(obj, obj);
}
15,返回函数
function functionFunction(str) {
var f = function(s) {
return str +", " +s;
}
return f;
16,
arr.forEach(function(e){
result.push(function(num){
return function(){
return fn(num);
};
}(e));
});
e是行参,意思是每次循环都把e的值代入num中进行操作。
17,
通过Array.prototype.slice.call(我们的类数组对象) 将其转换成一个真正的数组对象.
function useArguments() {
var arr=Array.prototype.slice.call(arguments)//把arguments类数组转化为数组
return eval(arr.join("+"));//求和
}
将arguments转化为数组后,截取第一个元素之后的所有元素,不能用apply,因为1不是数组
var result = Array.prototype.slice.call(arguments,1);
var result = function(){
return fn.apply(this,arr.concat([].slice.call(arguments)));
}
值得注意的是:
.concat( [].slice.call(arguments) ) 表示 fn的参数被拷贝了
18,柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。
return arguments.callee;
19.声明对象的两种方式var obj = { greeting : str1, name : str2, sayIt : function(){return this.greeting + ", " + this.name;} };
20,parseInt方法的可选参数是操作数的进制说明,不是目标的进制。数字转字符用toString(),字符转数字用parseInt() or parseFloat.
其它进制转十进制
parseInt(str,2)
parseInt(str,8)
parseInt(str,16)
21, 数据类型:
判别数据类型:
(typeof p == 'number')
22,
//直接连接字符串
s = s2+s;
23,
number上的toString可以对数字的进制进行转换,num是变量名,可以是任意的,输入的测试用例是数字类型。
var s = num.toString(2);
24,substring(start,end) 方法用于提取字符串中介于两个指定下标之间的字符。
end:一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。 end取不到
如果省略该参数,那么返回的子串会一直到字符串的结尾。
25,
将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。
constructor.prototype.greeting = greeting;
26,
判断对象obj上不在原型链上的属性
for in 是遍历,里面的key是变量名
if(obj.hasOwnProperty(key)){
//将属性和值按格式存入数组
arr.push(key+": "+obj[key]);
27,正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
判断字符串中是否含有数字,可以用正则表达式。/\d/可以匹配字符串中的数字字符,用test方法可以检测。
/\d{num}/ num表示数字,连续都是数字的个数
function containsNumber(str) {
var b = /\d/;
return b.test(str);
}
在正则表达式中,利用()进行分组,使用斜杠加数字表示引用,\1就是引用第一个分组,\2就是引用第二个分组。
/()\1/
return /([a-zA-Z])\1/.test(str);
var arr = str.match(/\d{3}/);
//如果arr存在目标结果,则返回第一个元素,即最早出现的目标结果
if(arr)
return arr[0];
else return false;