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