js-基础编程

常用的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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值