为了账号安全,请及时绑定邮箱和手机立即绑定

那些年成为node攻城狮的路(五)

标签:
Node.js

ECMASprict引用类型

  • Object
    Object实例可以使用new +构造函数()创建;也可以使用对象字面量表示法。
    访问对象属性可以使用点表示法 .;也可以使用[]表示法,后者可以通过变量来访问属性

var object1 = new Object();var object2 = {name:'L'};  
var key=name;
object.name    object[key]
  • Array
    Array.length属性不是只读的,即可以通过改变数组元素改变length,也可以改变length,改变数组。

var arr=['a','b','c'];
arr.length=2;console.log(arr);//['a','b']

Array的检测

console.log(typeof arr);//Objectconsole.log(arr instanceof Array);//trueconsole.log(arr instanceof Object);//trueconsole.log(Array.isArray(arr));//trueconsole.log(arr.constructor == Object);//falseconsole.log(arr.constructor == Array);//true

Array.join(c)返回有数组每个元素通过c拼接而成的字符串,如果没传入参数则默认以,拼接。

var arr=['a','b','c']console.log(arr.join('|--|'));//  a|--|b|--|c
  • 数组作为栈使用(LIFO)
    push()推入,添加数据直数组末尾;pop()弹出末尾数据

  • 数组作为队列使用(FIFO)
    shift()出队列,获取数组首部元素;push()入队列,添加数据至数组末尾

  • 数组作为反向队列使用(FIFO,头部进入尾部出)
    unshift入队列,添加数据至数组首部;pop()出队列,获取数组尾部元素

  • 重排序

  • reverse(),反转数组。

  • sort(),数组排序,可以传如函数指定排序规则。

var arr=[0,1,5,10,15]
arr.sort(function(a,b){if(a < b)      //如果返回负数,则说明第一个参数应该在第二个参数之前
        return -1;    else if(a == b)//如果返回0,则说明两个参数相等则
        return 0;
    esle           //如果返回正数,则说明第二个参数应该在第一个参数之前
        return 1});console.log(arr);
  • concat(),接收一个或多个参数,先基于当前数组创建一个副本,如果参数是数组则每一项都添加到数组副本中,如果数不是数组则直接添加到数组副本中。

var arr=[1,2,3];var arr1=arr.concat(4,5,[6,7]);console.log(arr);//[ 1, 2, 3 ]console.log(arr1);//[ 1, 2, 3, 4, 5, 6, 7 ]
  • slice(start,end) 基于当前数组中的某几项创建一个新数组。satrt开始位置,end结束位置减一,如果未指定end,则默认为length

var arr=[1,2,3,4,5,6,7,8];console.log(arr.slice(1,4));//[2,3,4]console.log(arr.slice(1));//[2,3,4,5,6,7,8]
  • splice()
    删除:删除任意数量的项,arguments[0]=删除的第一项位置,arguments[1]=删除的项数

var arr=[1,2,3,4,5,6,7,8];
arr.splice(2,4);console.log(arr);//[1,2,7,8]

插入(arguments[1]=0)|替换(arguments[1]=插入项数):插入任意数量的项,arguments[0]=起始位置,arguments[1]=删除的项数,arguments[2~]=插入项

var arr=[1,2,3,4,5,6,7,8];
arr.splice(2,3,'c','d','e');
console.log(arr);//从第二个位置开始删除3项(3,4,5)插入'c','d','e'。
  • 位置方法
    indexOf()从左至右 ; lastIndexOf()从右至左

  • 迭代方法

  • every(fn) 每一项执行fn,都返回true则返回true。

var arr=[1,2,3,4,5,6];var flag=arr.every(function(data){return data>3;
})console.log(flag);//false
  • some(fn)每一项执行fn,任一项返回true则返回true

var arr=[1,2,3,4,5,6];var flag=arr.every(function(data){return data>3;
})console.log(flag);//true
  • filter(fn) 每一项执行fn,返回true的项会组成数组并返回。-----过滤

var arr=[1,2,3,4,5,6];var flag=arr.filter(function(data){return data>3;
})console.log(flag);//[4,5,6]
  • forEach(fn) 每一项执行fn,无返回值。

  • map(fn) 每一项执行fn,返回函数调用的结果组成的数组。-----整体操作

var arr=[1,2,3,4,5,6];var flag=arr.map(function(data){return data>3;
})console.log(flag);//[ false, false, false, true, true, true ]
  • 归并方法
    reduce( fn )从数组第一项开始,向后遍历,reduceRight( fn )从数组最后一项开始,向前遍历。fn执行结果作为prev传入下次调用。如果数组仅有一项则直接返回。
    arguments[0] = 前一个值prev
    arguments[1] = 当前值cur
    arguments[2] = 当前项索引index
    arguments[3] = 数组对象 arr

var arr=[1,2,3,4,5,6];var sum=arr.reduce(function(prev,cur,index,arr){    return prev+cur;//第一次执行调用prev=arr[0],cur=arr[1];})console.log(sum);//21
  • Date类型
    var data=new Date();
    getTime(毫秒)、getFullYear(年)、getMonth(月,0表示1月)、getDate(日,1~31)、getDay(星期0,0表示星期一)、getHours(时)、getMinutes(分)、getSeconds(秒)

  • Function类型
    函数声明:function fn(){},解析器优先加载。
    函数定义:var fn=function(){},执行到该行代码才解析加载。

函数名实际是指向函数对象的一个指针,不存在重载,后定义的覆盖先定义的

函数内部拥有arguments(保存参数)this(指向当前对象)caller(指向该函数的调用者)argumens拥有一个callee的属性指向拥有arguments对象的函数。

function fn(num){    if(num<=1)return 1;    return num*f(num-1);//高耦合}function fn(num){    if(num<=1)return 1;    return num*arguments.callee(num-1);
}var color='yellow';var c1={color:'red'};var c2={color:'blue'};function say(){console.log(this.color);
}
c1.say=say;
c1.say();//redc2.say=say;
c2.say();//bluesay();//yellowfuction out(){
inner();
}function inner(){console.log(arguments.callee.caller);
}
out()返回out的源代码

函数内部拥有两个属性lenght(希望接收参数个数)prototype

函数内部都有两个非继承的方法applycall~在不同域中调用函数,等价于设置函数内部this值。接收两个参数第一个是环境执行域,第二个是参数。apply以数组传递,call逐个列举出来。

var color='yellow';var o={color:'red'};function say(){     var color='blue'
     console.log(this.color);
}
say()//yellowsay.call(this)//yellowsay.call(o)//red

bind函数可以绑定执行环境

var color='yellow';var o={color:'red'};function say(){     console.log(this.color);
}var bindSay=say.bind(o);
bindSay();//red而非yellow
  • 基本包装类型String Number Boolean
    每当创建一个基本类型值时,就会创建一个对应的包装类型值,提供一系列方法。仅存在于代码执行瞬间

var s='test';
s.name='t';console.log(s.name);//undefined//后台悄悄执行-->var s=new String('test');
s.name='t';
s=null;

常用String操作方法

var s='abcdefghijk';
s.charAt(1);//bs[1];//bs.charCodeAt(1)//98String.fromCharCode(98)//bvar s1=s.concat('l','m')//abcdefghijklmvar s1=s.slice(3);//"defghijk"var s1=s.substring(3);//"defghijk",结束位置=参数位置-1s.indexOf('a',i)//a的位置从位置i开始搜索,默认为0var s1=s.trim();//去除前后空格var s1=s.toUpperCase()//大写var s1=s.toLowerCase()//大写
  • Math|,全局域内置对象

Math.min(1,2,3,4)//1Math.max(1,2,3,4)//4Math.max.apply(Math,[1,2,3,4])//4以数组方式传入Math.random() 0<=x<1的随机数-->随机排序(给予一组对象随机值,按照随机值排序即可)



作者:我就是L
链接:https://www.jianshu.com/p/7bf059d76832


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消