摘要:引用類型類型創(chuàng)建實例用的少等價于操作符字面量表示法這里的稱為屬性,屬性名可以用字符串。函數(shù)返回的值作為下一次的第一個參數(shù)使用,依次遍歷數(shù)組,直至結(jié)束。
引用類型 Object類型
創(chuàng)建實例:
var person = new Object() (用的少)等價于 var person = {} person.name = "kangkang" person.age = 18 // new 操作符 var person = { name:"kangkang", age:18, 6:true } // 字面量表示法 //這里的name 稱為屬性,屬性名可以用字符串。參見json將必須的參數(shù)存儲
function displayInfo(args) { var output = "" if(typeof args.name == "string") { output += “Name: " + args.name + " " console.log(args.name) } if( typeof args.age == "number") { output += “Age: " + args.age + ” “ console.log(args.age) } console.log(output) } displayInfo({ name:"kangkang", age:18 }) displayInfo({ name:"kangkang" })
當一個函數(shù)需要有大量的參數(shù)以供使用時,但不是所有都是必須的,那么這樣寫就會提供很大便利,將經(jīng)常用到值使用命名參數(shù)(比如如果name和age經(jīng)常用到)處理,使用對象字面量封裝多個可選參數(shù)以供使用。
訪問屬性屬性的訪問一般使用點號,也可以使用方括號屬性名要加引號,不過有一個就是屬性名為數(shù)值時要用方括號并且無需引號括起來(括起來也行),特殊的屬性名需要用引號包圍起來(比如第一個字符為數(shù)字,或者含有空格或運算符). 屬性的書寫也基本遵循上面規(guī)則,保留字比如class則可以用作屬性名并且不加引號。
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"]) //trueArray 類型
JavaScript 中的數(shù)組可以保存不同類型的數(shù)據(jù)
創(chuàng)建方法
Array 構(gòu)造函數(shù)
字面量方法
var apples = Array(3) // 包含3個 undefined 的的數(shù)組 var age = [3] //包含一個數(shù)值3 的數(shù)組 console.log(apples) //[undefined, undefined, undefined] console.log(apples.length) // 3 console.log(age) // [3] console.log(age) //1訪問數(shù)組數(shù)值
通過索引訪問
var names = ["xiaoming", "xiaoqiang", "xiaojun"] name[0]~ name[2] console.log(names.length) // 3length的使用
var names = ["xiaoming", "xiaoqiang", "xiaojun"] names.length = 1 console.log(names) // ["xiaoming"] names.length = 4 console.log(names) //["xiaoming", undefined, undefined, undefined] // 數(shù)組的length 屬性可以去除和添加項Array.isArray(names)
檢測是否為數(shù)組
轉(zhuǎn)換為數(shù)組 names.toString()返回一個數(shù)組各項以逗號隔開的一個字符串(注意是組成了一個字符串)
names.join("-")以指定分隔符分割數(shù)組的項并返回組成的一個字符串,不傳或者傳入undefined 都將使用逗號分割
操作數(shù)組的項 pop() 方法棧方法,先進后出。彈出最上面的項(既然是彈出,就會返回彈出的值),無需參數(shù)。
var names = ["xiaoming", "xiaoqiang", "xiaojun"] console.log(names.pop()) //["xiaojun"] console.log(names) // ["xiaoming", "xiaoqiang"]push() 方法
棧方法,先進后出。推入,將參數(shù)依次推入棧中,數(shù)據(jù)添加到數(shù)組末尾,返回最終數(shù)組長度。
var names = ["xiaoming", "xiaoqiang", "xiaojun"] console.log(names.push("dalong")) // 4 console.log(names) // ["xiaoming", "xiaoqiang","dalong"]shift() 方法
取出數(shù)組第一項并返回
unshift() 方法按參數(shù)中順序?qū)⒅堤砑拥綌?shù)組開頭并返回個數(shù)
reverse() 方法var values = [1,2,3,4,5] values.reverse() console.log(values) // 5,4,3,2,1sort() 方法
默認將數(shù)組進行從小到大排序,但比較的是項的字符串Unicode位點進行排序,就會出現(xiàn)數(shù)值比較時的錯誤,所以可以傳遞一個比較函數(shù)來指定排布方式
function compare (value ,value2) { if(value < value2){ return -1 }else if (value > value2) { return 1 }else { return 0 } } // 這是升序排列的比較函數(shù)
function compare (value,value2){ return value - value2 } function compare (value,value2){ return value > value2 } // 這兩種形式均是從小到大排列的簡寫形式
比較函數(shù)的機制: sort接受true 和false ,對數(shù)組每一項按函數(shù)迭代比較,如上面代碼,若第一個參數(shù)(項) 小于第二個參數(shù)(項),如果想轉(zhuǎn)換位置則返回true,sort接受到true后進行位置交換。返回false則位置不變。
splice方法這是一個很強大的數(shù)組方法
可以刪除任意的項,接受兩個參數(shù),第一個是起始位置,第二個是刪除的項數(shù)(不是結(jié)束位置),返回被刪除的項
向指定的位置插入任意數(shù)量的項,接受三個參數(shù),分別是起始位置,要刪除的項數(shù)(0項),要插入的項(可以是多個項)
這個替換,可以不是等數(shù)量項的替換,執(zhí)行的是先刪除再插入的操作,接受的參數(shù)分別是,起始位置、要刪除的項數(shù)、要插入的項。注意到這里要刪除的項數(shù)如果是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()
裁剪,可以接受一個或者兩個參數(shù),第一個參數(shù)是起始位置,第二個是結(jié)束位置(不包括這個項),若只有一個參數(shù),則作為起始位置并至數(shù)組末尾,取出起始位置到結(jié)束位置的項作為一個新數(shù)組返回,不影響原數(shù)組。
var colors = ["red", "green", "blue", "black", "yellow", "brown"] var colors2 = colors.slice(1,3) //["green","blue","]concat(array)
拼接,可以把參數(shù)作為值添加到數(shù)組的末尾,如果這個參數(shù)是一個數(shù)組,則會將數(shù)組中的 值拿出添加進去,返回一個被改變的新數(shù)組,原數(shù)組不變
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()方法
均接受兩個參數(shù),分別是要查找的項和起始位置
indexOf():從數(shù)組開頭查找,第二個參數(shù)相對于開頭位置
lastIndexOf(): 從數(shù)組末尾開始查找,第二個參數(shù)是于末尾位置向前
迭代方法接受函數(shù)作為參數(shù),運行在數(shù)組每一項上,接受的函數(shù)又可以接受三個形式參數(shù)分別作用是:
迭代的值、該項在數(shù)組的位置(索引)、數(shù)組本身
對數(shù)組每一項運行給定函數(shù),只有每一項在函數(shù)運行后均為true,函數(shù)才返回true
對數(shù)組每一項運行給定函數(shù),返回一個由項在運行后且結(jié)果為true的項組成的新數(shù)組(過濾效果)
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)
對數(shù)組每一項運行給定函數(shù),沒有返回值
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]
每一項運行函數(shù),且返回運行后的每一項組成的數(shù)組
var numbers = [1,2,3,4,5,6,7,8,9] var mapResult = numbers.map((n)=> { numbers[index] += 2 //修改原數(shù)組的值 return n*2 //返回給新數(shù)組的對應(yīng)索引的值 }) console.log(mapResult) // [2, 4, 6, 8, 10, 12, 14, 16, 18]
對每一項運行函數(shù),只要有一項運行結(jié)果為true,則器結(jié)果返回true
reduce()方法和 reduceRight()方法歸并,接受兩個參數(shù):調(diào)用的函數(shù)和可選的初始值。調(diào)用的函數(shù)接受四個參數(shù):前一個值,當前值,索引,數(shù)組對象(這個有時會用到)。如果設(shè)置了初始值,就用初始值和第一項作為函數(shù)的參數(shù),如果沒有則是前兩項。函數(shù)返回的值作為下一次的第一個參數(shù)使用,依次遍歷數(shù)組,直至結(jié)束。
reduce()方法:從前往后開始
reduceRight()方法:從后往前開始
var values = [1,2,3,4,5] var sum = values.reduce(function(prev, cur, index, array){ return prev+cur }) // 這是一個求和的操作
此為看書筆記,僅作為本人備忘使用,如有謬誤,歡迎指正 。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94371.html
摘要:熟悉的同學(xué)都知道,它的數(shù)據(jù)類型一般分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型。基本數(shù)據(jù)類型基本數(shù)據(jù)類型有種新增。動態(tài)的屬性基本數(shù)據(jù)類型的值是沒有辦法添加屬性和方法的。類型檢測根據(jù)它的原型鏈來識別引用類型。 熟悉js的同學(xué)都知道,它的數(shù)據(jù)類型一般分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型(復(fù)雜數(shù)據(jù)類型)。那么他們之間到底有什么不同?從下面這個例子入手: var a = 1; ...
摘要:前兩天看到大神的關(guān)于基本數(shù)據(jù)類型和引用類型的區(qū)別的文章覺得寫得非常不錯,就想著在其基礎(chǔ)上加上自己平時看到的一些知識點和理解,所以就有了以下的文章基本數(shù)據(jù)類型基本數(shù)據(jù)類型包括基本數(shù)據(jù)類型是按值訪問的,就是說我們可以操作保存在變量中的實際的值基 前兩天看到kraaas大神的關(guān)于基本數(shù)據(jù)類型和引用類型的區(qū)別的文章覺得寫得非常不錯,就想著在其基礎(chǔ)上加上自己平時看到的一些知識點和理解,所以就有了...
摘要:變量有兩種不同的數(shù)據(jù)類型基本類型,引用類型。知識一基本類型值就是簡單的數(shù)據(jù)段引用類型值保存的是對象的引用,不是實際的對象。 ECMAScirpt 變量有兩種不同的數(shù)據(jù)類型:基本類型,引用類型。 基本的數(shù)據(jù)類型有:undefined,boolean,number,string,null. 基本類型的訪問是按值訪問的,就是說你可以操作保存在變量中的實際的值。JavaScript中除了上面的...
摘要:也就是說基本類型在賦值操作后,兩個變量是相互不受影響的。前面講引用類型的時候提到,保存在變量中的是對象在堆內(nèi)存中的地址,所以,與簡單賦值不同,這個值的副本實際上是一個指針,而這個指針指向存儲在堆內(nèi)存的一個對象。 ECMAScirpt 變量有兩種不同的數(shù)據(jù)類型:基本類型,引用類型。也有其他的叫法,比如原始類型和對象類型,擁有方法的類型和不能擁有方法的類型,還可以分為可變類型和不可變類型,...
摘要:具體來說就是當執(zhí)行流進入下列任何一個語句時,作用域鏈就會得到加長語句的塊和語句。這兩個語句都會在作用域鏈的前端添加一個變量對象。對來說,會將指定的對象添加到作用域鏈中。 1. 基本類型和引用類型的值 JavaScript變量可以用來保存兩種類型的值:基本類性值和引用類性值。基本類型值源自以下5種基本數(shù)據(jù)類型:Undefined、Null、Boolean、Number和String。基本...
閱讀 5050·2021-07-25 21:37
閱讀 692·2019-08-30 15:53
閱讀 3359·2019-08-29 18:47
閱讀 694·2019-08-29 15:39
閱讀 2139·2019-08-29 13:12
閱讀 1806·2019-08-29 12:43
閱讀 2997·2019-08-26 11:52
閱讀 1896·2019-08-26 10:15