在javascript中的ES6扩展操作符|类型脚本示例

265 阅读3分钟

大家都知道Spread操作符是javascript中新出现的功能,ES6的Typescript从2.1版本开始也实现了这个功能。在没有Spread操作符之前,函数声明如下 Typescript引入了Spread或REST参数 这个操作符被用于函数调用参数或函数头,参数的末尾以this为前缀。Typescript是javascript的一个超集。所有的例子和语法都可以在Typescript中使用。

当...被应用于函数参数的末尾时,其余参数被调用 当...被应用于函数调用参数时,传播操作符被调用

Function.prototype.apply示例

Function.prototype.apply()方法调用一个带有对象名称的函数,给定的参数是一个对象数组。这里对象名称不是必需的,以null形式传递。

在Spread介绍之前,如果我们想调用一个函数,我们必须使用Function对象的apply()方法。

function method (p,q,r) {
console.log(p,q,r)
}
//function calling with given arguments
method.apply(null,  [ 1, 2,3]); //1 2 3
method.apply(null,  [ 1,2]); // 1 2 undefined
method.apply(null,  [ 1,,2]); // 1 undefined 2
method.apply(null,  [ 1]); // 1 undefined undefined
method.apply(null,  null); // undefined undefined undefined

在这个例子中,该函数有三个参数,但这些参数不是必须的。同样的代码可以使用Spread Operator来简化,不需要调用apply,而且现在参数的前缀为...,如下所示

展开/休止符阵列示例

下面是一个扩展运算符的基本用法示例


var arrayExample = [11,21];
arrayExample = [...arrayExample, 31,14];
console.log(arrayExample); // [11, 21, 31, 14]

这是一个没有扩展运算符的数组例子。这里mArray作为一个单独的数组被插入到finalArray中。

var mArray = [8, 6];
var finalArray = [1, 2, mArray, 5, 6];
console.log(finalArray); // [1, 2, [8,6], 5, 6]

在使用传播操作时,这给出了单一的数组,而不是数组中的数组。

var mArray = [8, 6];
var finalArray = [1, 2, ...mArray, 5, 6];
console.log(finalArray); //[1, 2, 8, 6, 5, 6]

SpreadOperator对象示例

对于对象,Spread操作符的工作原理类似于Object.assign()方法。它将现有的对象值复制到新的对象中。


const object = {k1: 'v1', k2: 'v2'};
const object1 = {k3: 'v3', ...object};
console.log(object)//{k1: "v1", k2: "v2"}\
console.log(object1) //{k3: "v3", k1: "v1", k2: "v2"}

数组切片的替代例子

在javascript中,数组的Slice()方法被用来复制一个数组。我们也可以用Spread操作符来代替slice()方法。下面是一个例子

var arr = [1,2,3];
var arr1 = arr.slice();
var arr2 = [...arr];
arr2.push(4)
arr1.push(5)
console.log(arr) //[1, 2, 3]
console.log(arr1) //[1, 2, 3, 5]
console.log(arr2) // [1, 2, 3, 4]

使用concat和Spread操作符来追加数组

两者的结果是一样的。使用传播操作符,每个数组都被扩展到新的数组中去复制设定的值。

var array1 = ['1', '2', '3'];
var array2 = ['4', '5', '6'];
concarray = array1.concat(array2);
spreadarray = [...array1,...array2]
console.log(concarray); //["1", "2", "3", "4", "5", "6"]
console.log(spreadarray); //["1", "2", "3", "4", "5", "6"]

数学函数展开运算符的例子

这个操作符可以和数学函数一起使用。这里使用了Math.min函数,它返回数组的最小元素。

var array1 = [189, 21, 300];
var array2 = [100, 3, 4];
console.log(Math.min(189, 21, 300)) // 21
console.log(Math.min(100, 3, 4));  // 3
console.log(Math.min(...array1)) // 21
console.log(Math.min(...array2));// 3

如何将字符串转换成数组?字符串包含一组单词。使用传播操作符将字符串转换成字符数组:

var string = "This is spread example";
var characters = [...string];
console.log(characters);  //["T", "h", "i", "s", " ", "i", "s", " ", "s", "p", "r", "e", "a", "d", " ", "e", "x", "a", "m", "p", "l", "e"]