那些年成為node攻城獅的路(五)

ECMASprict引用類型

  • Object
    Object實例可以使用new +構(gòu)造函數(shù)()創(chuàng)建;也可以使用對象字面量表示法淹魄。
    訪問對象屬性可以使用點表示法 .;也可以使用[]表示法,后者可以通過變量來訪問屬性
var object1 = new Object();
var object2 = {name:'L'};  
var key=name;
object.name    object[key]
  • Array
    Array.length屬性不是只讀的,即可以通過改變數(shù)組元素改變length配深,也可以改變length,改變數(shù)組嫁盲。
var arr=['a','b','c'];
arr.length=2;
console.log(arr);//['a','b']

Array的檢測

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

Array.join(c)返回有數(shù)組每個元素通過c拼接而成的字符串篓叶,如果沒傳入?yún)?shù)則默認以,拼接。

var arr=['a','b','c']
console.log(arr.join('|--|'));//  a|--|b|--|c
  • 數(shù)組作為棧使用(LIFO)
    push()推入羞秤,添加數(shù)據(jù)直數(shù)組末尾缸托;pop()彈出末尾數(shù)據(jù)

  • 數(shù)組作為隊列使用(FIFO)
    shift()出隊列,獲取數(shù)組首部元素瘾蛋;push()入隊列俐镐,添加數(shù)據(jù)至數(shù)組末尾

  • 數(shù)組作為反向隊列使用(FIFO,頭部進入尾部出)
    unshift入隊列,添加數(shù)據(jù)至數(shù)組首部瘦黑;pop()出隊列京革,獲取數(shù)組尾部元素

  • 重排序

  • reverse(),反轉(zhuǎn)數(shù)組奇唤。

  • sort()幸斥,數(shù)組排序,可以傳如函數(shù)指定排序規(guī)則咬扇。

var arr=[0,1,5,10,15]
arr.sort(function(a,b){
if(a < b)      //如果返回負數(shù)甲葬,則說明第一個參數(shù)應(yīng)該在第二個參數(shù)之前
        return -1;
    else if(a == b)//如果返回0,則說明兩個參數(shù)相等則
        return 0;
    esle           //如果返回正數(shù)懈贺,則說明第二個參數(shù)應(yīng)該在第一個參數(shù)之前
        return 1
});
console.log(arr);
  • concat(),接收一個或多個參數(shù)经窖,先基于當(dāng)前數(shù)組創(chuàng)建一個副本,如果參數(shù)是數(shù)組則每一項都添加到數(shù)組副本中梭灿,如果數(shù)不是數(shù)組則直接添加到數(shù)組副本中画侣。
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) 基于當(dāng)前數(shù)組中的某幾項創(chuàng)建一個新數(shù)組。satrt開始位置堡妒,end結(jié)束位置減一,如果未指定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()
    刪除:刪除任意數(shù)量的項,arguments[0]=刪除的第一項位置,arguments[1]=刪除的項數(shù)
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]=插入項數(shù)):插入任意數(shù)量的項,arguments[0]=起始位置,arguments[1]=刪除的項數(shù)搬泥,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) 每一項執(zhí)行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)每一項執(zhí)行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) 每一項執(zhí)行fn燥透,返回true的項會組成數(shù)組并返回沙咏。-----過濾
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) 每一項執(zhí)行fn,無返回值兽掰。

  • map(fn) 每一項執(zhí)行fn芭碍,返回函數(shù)調(diào)用的結(jié)果組成的數(shù)組。-----整體操作

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 )從數(shù)組第一項開始孽尽,向后遍歷,reduceRight( fn )從數(shù)組最后一項開始窖壕,向前遍歷。fn執(zhí)行結(jié)果作為prev傳入下次調(diào)用杉女。如果數(shù)組僅有一項則直接返回瞻讽。
    arguments[0] = 前一個值prev
    arguments[1] = 當(dāng)前值cur
    arguments[2] = 當(dāng)前項索引index
    arguments[3] = 數(shù)組對象 arr
var arr=[1,2,3,4,5,6];
var sum=arr.reduce(function(prev,cur,index,arr){
    return prev+cur;//第一次執(zhí)行調(diào)用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類型
    函數(shù)聲明:function fn(){}积担,解析器優(yōu)先加載陨晶。
    函數(shù)定義:var fn=function(){},執(zhí)行到該行代碼才解析加載帝璧。

函數(shù)名實際是指向函數(shù)對象的一個指針先誉,不存在重載,后定義的覆蓋先定義的

函數(shù)內(nèi)部擁有arguments(保存參數(shù))this(指向當(dāng)前對象)caller(指向該函數(shù)的調(diào)用者)的烁,argumens擁有一個callee的屬性指向擁有arguments對象的函數(shù)褐耳。

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();//red
c2.say=say;
c2.say();//blue
say();//yellow
fuction out(){
inner();
}
function inner(){
console.log(arguments.callee.caller);
}
out()返回out的源代碼

函數(shù)內(nèi)部擁有兩個屬性lenght(希望接收參數(shù)個數(shù))prototype

函數(shù)內(nèi)部都有兩個非繼承的方法applycall~在不同域中調(diào)用函數(shù),等價于設(shè)置函數(shù)內(nèi)部this值渴庆。接收兩個參數(shù)第一個是環(huán)境執(zhí)行域铃芦,第二個是參數(shù)买雾。apply以數(shù)組傳遞,call逐個列舉出來杨帽。

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

bind函數(shù)可以綁定執(zhí)行環(huán)境

var color='yellow';
var o={color:'red'};
function say(){
     console.log(this.color);
}
var bindSay=say.bind(o);
bindSay();//red而非yellow
  • 基本包裝類型String Number Boolean
    每當(dāng)創(chuàng)建一個基本類型值時漓穿,就會創(chuàng)建一個對應(yīng)的包裝類型值,提供一系列方法注盈。僅存在于代碼執(zhí)行瞬間
var s='test';
s.name='t';
console.log(s.name);//undefined
//后臺悄悄執(zhí)行-->
var s=new String('test');
s.name='t';
s=null;

常用String操作方法

var s='abcdefghijk';
s.charAt(1);//b
s[1];//b
s.charCodeAt(1)//98
String.fromCharCode(98)//b
var s1=s.concat('l','m')//abcdefghijklm
var s1=s.slice(3);//"defghijk"
var s1=s.substring(3);//"defghijk",結(jié)束位置=參數(shù)位置-1
s.indexOf('a',i)//a的位置從位置i開始搜索晃危,默認為0
var s1=s.trim();//去除前后空格
var s1=s.toUpperCase()//大寫
var s1=s.toLowerCase()//大寫
  • Math|,全局域內(nèi)置對象
Math.min(1,2,3,4)//1
Math.max(1,2,3,4)//4
Math.max.apply(Math,[1,2,3,4])//4以數(shù)組方式傳入
Math.random() 0<=x<1的隨機數(shù)-->隨機排序(給予一組對象隨機值,按照隨機值排序即可)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末老客,一起剝皮案震驚了整個濱河市僚饭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胧砰,老刑警劉巖鳍鸵,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尉间,居然都是意外死亡偿乖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門哲嘲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贪薪,“玉大人,你說我怎么就攤上這事眠副』校” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵囱怕,是天一觀的道長霍弹。 經(jīng)常有香客問我,道長娃弓,這世上最難降的妖魔是什么典格? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮忘闻,結(jié)果婚禮上钝计,老公的妹妹穿的比我還像新娘恋博。我一直安慰自己齐佳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布债沮。 她就那樣靜靜地躺著炼吴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疫衩。 梳的紋絲不亂的頭發(fā)上硅蹦,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音,去河邊找鬼童芹。 笑死涮瞻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的假褪。 我是一名探鬼主播署咽,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼生音!你這毒婦竟也來了宁否?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缀遍,失蹤者是張志新(化名)和其女友劉穎慕匠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體域醇,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡台谊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了譬挚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片青伤。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖殴瘦,靈堂內(nèi)的尸體忽然破棺而出狠角,到底是詐尸還是另有隱情,我是刑警寧澤蚪腋,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布丰歌,位于F島的核電站,受9級特大地震影響屉凯,放射性物質(zhì)發(fā)生泄漏立帖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一悠砚、第九天 我趴在偏房一處隱蔽的房頂上張望晓勇。 院中可真熱鬧,春花似錦灌旧、人聲如沸绑咱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽描融。三九已至,卻和暖如春衡蚂,著一層夾襖步出監(jiān)牢的瞬間窿克,已是汗流浹背骏庸。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留年叮,地道東北人具被。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像只损,于是被迫代替她去往敵國和親硬猫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容