擴充功能程式碼片段 (Snippets)

rest參數

"rest參數,將傳入的參數放入陣列中": {
"prefix": "$NewRest0001",
"body": [
"//rest參數,將傳入的參數放入陣列中",
"//1.rest參數必須是最後一個參數,否則會報錯。",
"const ${1:函數名} = (${2:參數名}...values) => {",
" ${3:console.log(values);}",
"}"
],
"description": "rest參數,將傳入的參數放入陣列中"
}

箭頭函數

"箭頭函數": {
"prefix": "$NewArrowFunction0001",
"body": [
"//箭頭函數",
"//1.直接返回return \"=>\" 右方內容",
"// const f = v => v ; ",
"// 等同",
"// const f = (v) => (v) ; ",
"//2.直接返回物件必加上()",
"// const f = (v) => ({ x: v }) ; ",
"const ${1:箭頭函數} = (${2:參數1}, ${3:參數2}) => {",
" //做一些事情",
" return ${4:回傳值};",
"}"
],
"description": "箭頭函數"
}

陣列的擴展運算符

"陣列的擴展運算符(...)": {
"prefix": "$NewArraySpread0001",
"body": [
"//陣列的擴展運算符(...)",
"//1.會將一個陣列轉為用逗號分隔的參數序列。 如 ...[1,2,3] 轉為 1,2,3 ",
"//2.可用在陣列轉為參數傳入函入,add(...[1,2,3]])",
"//3.可搭配表達式",
"// const arr = [",
"// ...( true ? ['a', 'b'] : []),",
"// 'c'",
"// ];",
"//4.(...)擴展陣列時為淺拷貝",
"//5.可搭配解構賦值使用",
"// const [first, ...rest] = [1, 2, 3, 4, 5];",
"//6.搭配字串使用,如 [...'hello']。",
"const ${1:變數名} = [...${2:要擴展的陣列}];"
],
"description": "陣列的擴展運算符(...)"
}

find()、findIndex()

"陣列的find()函數": {
"prefix": "$NewArrayFind0001",
"body": [
// "//陣列的find()函數",
// "//1.可接受三個參數,依次為當前的值、當前的位置和原陣列;",
// "// 返回第一個符合條件的陣列成員的值,如果所有成員都不符合條件,則返回 undefined。",
"${1:陣列名}.find(function(value, index, arr) {",
" //做一些事",
" return ${2:回傳值};",
" })"
],
"description": "陣列的find()函數 \n 1.可接受三個參數,依次為當前的值、當前的位置和原陣列; \n\t 返回第一個符合條件的陣列成員的值,如果所有成員都不符合條件,則返回 undefined。"
},
"陣列的findIndex()函數": {
"prefix": "$NewArrayFindIndex0001",
"body": [
// "//陣列的findIndex()函數",
// "//1.可接受三個參數,依次為當前的值、當前的位置和原陣列;",
// "// 返回第一個符合條件的陣列成員的位置,如果所有成員都不符合條件,則返回 -1。",
"${1:陣列名}.findIndex(function(value, index, arr) {",
" //做一些事",
" return ${2:回傳值};",
" })"
],
"description": "陣列的findIndex()函數 \n 1.可接受三個參數,依次為當前的值、當前的位置和原陣列; \n\t 返回第一個符合條件的陣列成員的位置,如果所有成員都不符合條件,則返回 -1。"
}

flat()、flatMap()

"陣列的flat()函數": {
"prefix": "$NewArrayFlat0001",
"body": [
// "//陣列的flat()函數",
// "把陣列\"拉平\"指定層數",
"${1:陣列名}.flat(${2:幾層或Infinity}); "
],
"description": "陣列的flat()函數 \n 把陣列\"拉平\"指定層數"
},
"陣列的flatMap()函數": {
"prefix": "$NewArrayFlatMap0001",
"body": [
// "//陣列的flatMap()函數",
// "只把陣列\"拉平\"一層,但能對每個成員執行一個函數",
"${1:陣列名}.flatMap((x) => {${2:一些事情}}));"
],
"description": "陣列的flatMap()函數 \n 只把陣列\"拉平\"一層,但能對每個成員執行一個函數"
}

模板字串

注意 ! 複製此程式碼片段時,請將下面 "取代這裡" 取代成兩個反斜線 "\\"

"模板字串": {
"prefix": "$NewStringTemplate0001",
"body": [
"//模板字串",
"//如 : `取代這裡${x} + 取代這裡${y * 2} = 取代這裡${x + y * 2}`",
"`取代這裡${${1:變數或運算等等}}`"
],
"description": "模板字串"
}

物件內成員簡寫

"物件內成員簡寫": {
"prefix": "$NewObjectAbbreviation0001",
"body": [
"//物件內成員簡寫",
"// let prop1 = '字串';",
"// const Person = {",
"// name : \"Arhua\",",
"// prop1,",
"// hello() { console.log(this.name); }//此this指向物件本身,所以this.name 為 Arhua",
"// };"
],
"description": "物件內成員簡寫"
}

為物件設定、取得成員

"為物件設定、取得成員": {
"prefix": "$NewObjectSetOrGetElement0001",
"body": [
"//為物件設定、取得成員",
"//1.在物件外設定成員",
"//obj.a = true;",
"//obj['a' + 'bc'] = 123;",
"//2.在物件內設定成員",
"//let obj = {",
"// ['a' + 'bc']: 123,",
"// ['h' + 'ello']() {...}",
"//};",
"//3.取用成員",
"//obj.foo);",
"//obj['foo']);",
"//obj.hello());",
"//obj['hello']());"
],
"description": "為物件設定、取得成員"
}

物件的 this 與 super

"物件的 this 與 super": {
"prefix": "$NewObjectThisAndSuper0001",
"body": [
"//物件的 this 與 super",
"//1.物件內this指向函數所在的物件",
"//2.super,它是指向\"物件的函數所在的當前物件\"的原型物件 ( proto )",
"//3.super只能用在\"物件的函數\"之中,如",
"// const proto = {",
"// foo: 'hello'",
"// };",
"// const obj = {",
"// foo: 'world',",
"// ['find']() {",
"// console.log(this.foo); //指向 obj.foo : 'world'",
"// return super.foo; //指向 obj.__proto__ ,(只能用在這裡)",
"// }",
"// };",
"// Object.setPrototypeOf(obj, proto);//將proto加入至obj的原型物件"
],
"description": "物件的 this 與 super"
}

物件的擴展運算符

"物件的擴展運算符(...)": {
"prefix": "$NewObjectSpread0001",
"body": [
"//物件的擴展運算符(...)",
"//1.搭配解構賦值使用,...必須在最後一個位置",
"// let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };",
"//2.拷貝所有成員,此為淺拷貝",
"//let z = { a: 3, b: 4 };",
"//let n = { f: 200, ...z, u: 100};// ... 可以放在任意位置",
"//3.將陣列、字串轉為物件",
"//let foo = { ...['a', 'b', 'c'] };// {0: \"a\", 1: \"b\", 2: \"c\"}",
"//let foo = {...'hello'};// {0: \"h\", 1: \"e\", 2: \"l\", 3: \"l\", 4: \"o\"}"
],
"description": "物件的擴展運算符(...)"
}

鏈判斷運算符

"鏈判斷運算符(?.)": {
"prefix": "$NewObjectOptionalChaining0001",
"body": [
"//鏈判斷運算符(?.)",
"//1.鏈判斷運算符 \"?.\" 會檢查左側的物件是否為null或undefined。若是的,就返回undefined,否則接續運算右側的物件。",
"//const firstName = (message && message.body && message.body['user']) || 'default';",
"//等同",
"//const firstName = message?.body?.['user'] || 'default';",
"//2.若函數或物件的方法不為null或undefined,調用直接該函數或物件的方法",
"// message?.functionName?.(傳入的參數...)"
],
"description": "鏈判斷運算符(?.)"
}

Null判斷運算符

"Null判斷運算符(??)": {
"prefix": "$NewObjectDoubleQuestionMark0001",
"body": [
"//Null判斷運算符(??)",
"//1.運算符左側的值為null或undefined時,才會返回右側的值。",
"// const headerText = response?.headerText ?? 'Hello, world!';"
],
"description": "Null判斷運算符(??)"
}