引用類型基本使用

引用類型

Object類型

建立實例: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

Array 類型

JavaScript 中的數組能夠保存不一樣類型的數據
建立方法函數

  1. Array 構造函數
  2. 字面量方法
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

length的使用

var names = ['xiaoming', 'xiaoqiang', 'xiaojun']
names.length = 1
console.log(names)
// ["xiaoming"]

names.length = 4
console.log(names)
//["xiaoming", undefined, undefined, undefined]

// 數組的length 屬性能夠去除和添加項

Array.isArray(names)

檢測是否爲數組對象

轉換爲數組

names.toString()

返回一個數組各項以逗號隔開的一個字符串(注意是組成了一個字符串)排序

names.join('-')

以指定分隔符分割數組的項並返回組成的一個字符串,不傳或者傳入undefined 都將使用逗號分割索引

操做數組的項

pop() 方法

棧方法,先進後出。彈出最上面的項(既然是彈出,就會返回彈出的值),無需參數。ip

var names = ['xiaoming', 'xiaoqiang', 'xiaojun']

console.log(names.pop()) //["xiaojun"]
console.log(names) // ["xiaoming", "xiaoqiang"]

push() 方法

棧方法,先進後出。推入,將參數依次推入棧中,數據添加到數組末尾,返回最終數組長度。字符串

var names = ['xiaoming', 'xiaoqiang', 'xiaojun']

console.log(names.push('dalong')) // 4
console.log(names) // ["xiaoming", "xiaoqiang","dalong"]

shift() 方法

取出數組第一項並返回

unshift() 方法

按參數中順序將值添加到數組開頭並返回個數

reverse() 方法

var values = [1,2,3,4,5]
values.reverse()
console.log(values) // 5,4,3,2,1

sort() 方法

默認將數組進行從小到大排序,但比較的是項的字符串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方法

這是一個很強大的數組方法

刪除 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'

slice()

裁剪,能夠接受一個或者兩個參數,第一個參數是起始位置,第二個是結束位置(不包括這個項),若只有一個參數,則做爲起始位置並至數組末尾,取出起始位置到結束位置的項做爲一個新數組返回,不影響原數組。

var colors = ["red", "green", "blue", "black", "yellow", "brown"]
var colors2 = colors.slice(1,3) //['green','blue',']

concat(array)

拼接,能夠把參數做爲值添加到數組的末尾,若是這個參數是一個數組,則會將數組中的 值拿出添加進去,返回一個被改變的新數組,原數組不變

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"]

indexOf() 方法 lastIndexOf()方法

均接受兩個參數,分別是要查找的項和起始位置

  • indexOf():從數組開頭查找,第二個參數相對於開頭位置
  • lastIndexOf(): 從數組末尾開始查找,第二個參數是於末尾位置向前

迭代方法

接受函數做爲參數,運行在數組每一項上,接受的函數又能夠接受三個形式參數分別做用是:
迭代的值、該項在數組的位置(索引)、數組自己

every()

對數組每一項運行給定函數,只有每一項在函數運行後均爲true,函數才返回true

filter()

對數組每一項運行給定函數,返回一個由項在運行後且結果爲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)
forEach()

對數組每一項運行給定函數,沒有返回值

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]
map()

每一項運行函數,且返回運行後的每一項組成的數組

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]
some()

對每一項運行函數,只要有一項運行結果爲true,則器結果返回true


reduce()方法和 reduceRight()方法

歸併,接受兩個參數:調用的函數和可選的初始值。調用的函數接受四個參數:前一個值,當前值,索引,數組對象(這個有時會用到)。若是設置了初始值,就用初始值和第一項做爲函數的參數,若是沒有則是前兩項。函數返回的值做爲下一次的第一個參數使用,依次遍歷數組,直至結束。

  • reduce()方法:從前日後開始
  • reduceRight()方法:從後往前開始
var values = [1,2,3,4,5]
var sum = values.reduce(function(prev, cur, index, array){
  return prev+cur
})
// 這是一個求和的操做

此爲看書筆記,僅做爲本人備忘使用,若有謬誤,歡迎指正 。

相關文章
相關標籤/搜索