ECMAScript 的 String.prototype 亦提供 slice() 取得部分 String,且以 OOP 形式提供。
Version
macOS Catalina 10.15.2
VS Code 1.41.1
Quokka 1.0.275
ECMAScript 2015
Imperative
let data = 'FP in JavaScript'
let slice = begin => end => str => {
let result = ''
for(let i = 0; i < str.length; i++)
if (i >= begin && i < end)
result += str[i]
return result
}
slice(6)(16)(data) // ?
Imperative 會先建立欲回傳的 result string,使用 for loop 搭配 if 判斷,若 index 在傳進的 begin 與 end 之中,則塞進 result 中。

slice()
let data = 'FP in JavaScript'
data.slice(6, 16) // ?
ECMAScript 原生的 String.prototype 已內建 slice(),可直接使用。
str.slice(beginIndex[, endIndex])
取得部分 string
beginIndex:string 的起始 index
endIndex:array 的結束 index (但不包含)

let data = 'FP in JavaScript'
data.slice(6, -6) // ?
Index 也可以傳入負數,其中 -1 就是最後一個 char,-2 就是倒數第二個 char,以此類推。

let data = 'FP in JavaScript'
data.slice() // ?
若 slice() 不提供任何 argument,則相當於 shallow copy 完整 string。

Conclusion
slice()允許 index 為負數slice()是真的 copy string,唯 ECMAScript 都是 shallow copy