建立實例:json
var person = new Object() (用的少)等價於 var person = {} person.name = 'kangkang' person.age = 18 // new 操做符 var person = { name:'kangkang', age:18, 6:true } // 字面量表示法 //這裏的name 稱爲屬性,屬性名能夠用字符串。參見json
function displayInfo(args) { var output = '' if(typeof args.name == 'string') { output += 「Name: " + args.name + "\n" console.log(args.name) } if( typeof args.age == 'number') { output += 「Age: " + args.age + 」\n「 console.log(args.age) } console.log(output) } displayInfo({ name:'kangkang', age:18 }) displayInfo({ name:'kangkang' })
當一個函數須要有大量的參數以供使用時,但不是全部都是必須的,那麼這樣寫就會提供很大便利,將常常用到值使用命名參數(好比若是name和age常常用到)處理,使用對象字面量封裝多個可選參數以供使用。數組
屬性的訪問通常使用點號,也可使用方括號屬性名要加引號,不過有一個就是屬性名爲數值時要用方括號而且無需引號括起來(括起來也行),特殊的屬性名須要用引號包圍起來(好比第一個字符爲數字,或者含有空格或運算符). 屬性的書寫也基本遵循上面規則,保留字好比class
則能夠用做屬性名而且不加引號。app
var person = { name:'kangkang', "age":18, 6:true '1a': "no", 'a b': "i", 'p+q': "go" } console.log(person.age) // 18 console.log(person['age']) // 18 console.log(person[6]) // true console.log(['6']) //true
JavaScript 中的數組能夠保存不一樣類型的數據
建立方法函數
var apples = Array(3) // 包含3個 undefined 的的數組 var age = [3] //包含一個數值3 的數組 console.log(apples) //[undefined, undefined, undefined] console.log(apples.length) // 3 console.log(age) // [3] console.log(age) //1
經過索引訪問code
var names = ['xiaoming', 'xiaoqiang', 'xiaojun'] name[0]~ name[2] console.log(names.length) // 3
var names = ['xiaoming', 'xiaoqiang', 'xiaojun'] names.length = 1 console.log(names) // ["xiaoming"] names.length = 4 console.log(names) //["xiaoming", undefined, undefined, undefined] // 數組的length 屬性能夠去除和添加項
檢測是否爲數組對象
返回一個數組各項以逗號隔開的一個字符串(注意是組成了一個字符串)排序
以指定分隔符分割數組的項並返回組成的一個字符串,不傳或者傳入undefined 都將使用逗號分割索引
棧方法,先進後出。彈出最上面的項(既然是彈出,就會返回彈出的值),無需參數。ip
var names = ['xiaoming', 'xiaoqiang', 'xiaojun'] console.log(names.pop()) //["xiaojun"] console.log(names) // ["xiaoming", "xiaoqiang"]
棧方法,先進後出。推入,將參數依次推入棧中,數據添加到數組末尾,返回最終數組長度。字符串
var names = ['xiaoming', 'xiaoqiang', 'xiaojun'] console.log(names.push('dalong')) // 4 console.log(names) // ["xiaoming", "xiaoqiang","dalong"]
取出數組第一項並返回
按參數中順序將值添加到數組開頭並返回個數
var values = [1,2,3,4,5] values.reverse() console.log(values) // 5,4,3,2,1
默認將數組進行從小到大排序,但比較的是項的字符串Unicode位點進行排序,就會出現數值比較時的錯誤,因此能夠傳遞一個比較函數來指定排布方式
function compare (value ,value2) { if(value < value2){ return -1 }else if (value > value2) { return 1 }else { return 0 } } // 這是升序排列的比較函數
function compare (value,value2){ return value - value2 } function compare (value,value2){ return value > value2 } // 這兩種形式均是從小到大排列的簡寫形式
比較函數的機制: sort接受true 和false ,對數組每一項按函數迭代比較,如上面代碼,若第一個參數(項) 小於第二個參數(項),若是想轉換位置則返回true,sort接受到true後進行位置交換。返回false則位置不變。
這是一個很強大的數組方法
splice(2, 2)
能夠刪除任意的項,接受兩個參數,第一個是起始位置,第二個是刪除的項數(不是結束位置),返回被刪除的項
splice(2, 0, 2)
向指定的位置插入任意數量的項,接受三個參數,分別是起始位置,要刪除的項數(0項),要插入的項(能夠是多個項)
splice(2, 2, "a","b")
這個替換,能夠不是等數量項的替換,執行的是先刪除再插入的操做,接受的參數分別是,起始位置、要刪除的項數、要插入的項。注意到這裏要刪除的項數若是是0就變成了只有插入功能了。
var colors = ["red", "green", "blue", "black"] console.log(colors.splice(0,1)) //["red"] console.log(colors) // ["green", "blue", "black"] // 刪除從0 開始一個項 colors.splice(0,0,'yellow') console.log(colors) // ["yellow", "green", "blue", "black"] // 在0位置插入'yellow',項依次後移 colors.splice(1,2,'brown') console.log(colors) // ["yellow", "brown", "black"] // 從 1 開始刪除兩個項,並插入項' brown'
裁剪,能夠接受一個或者兩個參數,第一個參數是起始位置,第二個是結束位置(不包括這個項),若只有一個參數,則做爲起始位置並至數組末尾,取出起始位置到結束位置的項做爲一個新數組返回,不影響原數組。
var colors = ["red", "green", "blue", "black", "yellow", "brown"] var colors2 = colors.slice(1,3) //['green','blue',']
拼接,能夠把參數做爲值添加到數組的末尾,若是這個參數是一個數組,則會將數組中的 值拿出添加進去,返回一個被改變的新數組,原數組不變
var colors = ['red','green','blue'] var colors2 = colors.concat('black',['yellow','brown']) console.log(colors) // ["red", "green", "blue"] console.log(colors2) // ["red", "green", "blue", "black", "yellow", "brown"]
均接受兩個參數,分別是要查找的項和起始位置
接受函數做爲參數,運行在數組每一項上,接受的函數又能夠接受三個形式參數分別做用是:
迭代的值、該項在數組的位置(索引)、數組自己
對數組每一項運行給定函數,只有每一項在函數運行後均爲true,函數才返回true
對數組每一項運行給定函數,返回一個由項在運行後且結果爲true的項組成的新數組(過濾效果)
var numbers = [1,2,3,4,5,6,7,8,9] var filterResult = numbers.filter(function(item, index ,array){ return (item >2 ) }) console.log(filterResult)
對數組每一項運行給定函數,沒有返回值
var numbers = [1,2,3,4,5,6,7,8,9] numbers.forEach((n,index)=> { numbers[index] += 2 }) console.log(numbers) // [3, 4, 5, 6, 7, 8, 9, 10, 11]
每一項運行函數,且返回運行後的每一項組成的數組
var numbers = [1,2,3,4,5,6,7,8,9] var mapResult = numbers.map((n)=> { numbers[index] += 2 //修改原數組的值 return n*2 //返回給新數組的對應索引的值 }) console.log(mapResult) // [2, 4, 6, 8, 10, 12, 14, 16, 18]
對每一項運行函數,只要有一項運行結果爲true,則器結果返回true
歸併,接受兩個參數:調用的函數和可選的初始值。調用的函數接受四個參數:前一個值,當前值,索引,數組對象(這個有時會用到)。若是設置了初始值,就用初始值和第一項做爲函數的參數,若是沒有則是前兩項。函數返回的值做爲下一次的第一個參數使用,依次遍歷數組,直至結束。
var values = [1,2,3,4,5] var sum = values.reduce(function(prev, cur, index, array){ return prev+cur }) // 這是一個求和的操做
此爲看書筆記,僅做爲本人備忘使用,若有謬誤,歡迎指正 。