>  기사  >  웹 프론트엔드  >  배열, 함수, 객체에 대한 JavaScript ES6 확장의 공통 요약

배열, 함수, 객체에 대한 JavaScript ES6 확장의 공통 요약

巴扎黑
巴扎黑원래의
2017-07-22 16:56:211291검색

1.1. Array.from()

Array.from 메소드는 두 가지 유형의 객체를 실제 배열로 변환하는 데 사용됩니다: 배열 유사 객체(array-like object) 및 순회 가능(iterable) 객체(ES6 새로운 데이터 구조 SetMap 포함).

다음은 배열형 객체인데, Array.from이 이를 실제 배열로 변환합니다.

let arrayLike = {

    '0': 'a',

    '1': 'b',

    '2': 'c',

    length: 3};

// ES5的写法var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']

// ES6的写法let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']

Array.from([1, 2, 3])

// [1, 2, 3]

Array.from('hello')

// ['h', 'e', 'l', 'l', 'o']

 

Array.from은 배열의 map 메서드와 유사한 두 번째 매개변수도 허용할 수 있으며, 이는 각 요소를 처리하고 처리된 값을 반환된 배열에 넣는 데 사용됩니다. .

Array.from(arrayLike, x => x * x);

// 等同于Array.from(arrayLike).map(x => x * x);

 

Array.from([1, 2, 3], (x) => x * x)

// [1, 4, 9]

 

1.2. Array.of()

Array.of 메서드는 값 집합을 배열로 변환하는 데 사용됩니다.

Array.of(3, 11, 8) // [3,11,8]

Array.of(3) // [3]

Array.of(3).length // 1

 

1.3. entries(), keys()values()

ES6

배열 인스턴스 세 가지 새로운 Method —— 항목 제공 (), keys()values() - 는 배열을 반복하는 데 사용됩니다. 둘 다 for...of 루프를 사용하여 탐색할 수 있는 순회 개체를 반환합니다. 유일한 차이점은 keys()는 키 이름 순회이고, values()는 키 값 순회라는 점입니다. , 항목()은 키-값 쌍 순회입니다.

for (let index of ['a', 'b'].keys()) {

  console.log(index);

}

// 0// 1

for (let elem of ['a', 'b'].values()) {

  console.log(elem);

}

// 'a'// 'b'

for (let [index, elem] of ['a', 'b'].entries()) {

  console.log(index, elem);

}

// 0 "a"// 1 "b"
 

1.4.

함수 매개변수의 기본값

ES6

함수 매개변수에 대한 기본값 설정, 즉 매개변수 정의 바로 뒤에 쓸 수 있습니다.

function log(x, y = 'World') {

  console.log(x, y);}

log('Hello') // Hello World

log('Hello', 'China') // Hello China

log('Hello', '') // Hello
 

매개변수 변수는 기본적으로 선언되므로 let 또는 const를 사용하여 다시 선언할 수 없습니다.

function foo(x = 5) {

  let x = 1;

 // error

  const x = 2; 

// error

}
 

위 코드에서는 매개변수 변수 x가 기본적으로 선언되어 있습니다. 함수 본문에서는 let 또는 const로 다시 선언할 수 없습니다. 그렇지 않으면 오류가 보고됩니다. .

1.5.

스프레드 연산자 적용

(1) 배열 병합

스프레드 연산자는 배열 병합을 작성하는 새로운 방법을 제공합니다.

// ES5[1, 2].concat(more)

// ES6[1, 2, ...more]

var arr1 = ['a', 'b'];var arr2 = ['c'];var arr3 = ['d', 'e'];

// ES5的合并数组

arr1.concat(arr2, arr3);

// [ 'a', 'b', 'c', 'd', 'e' ]

// ES6的合并数组

[...arr1, ...arr2, ...arr3]

// [ 'a', 'b', 'c', 'd', 'e' ]
 

1.6.

화살표 기능

ES6

을 사용하면 "arrow" (=> ; ) 함수를 정의합니다.

var f = v => v;

위의 화살표 함수는 다음과 같습니다.

var f = function(v) {

return v;

};

$(function() {

       var a=()=>{

         const [a, b, c, d, e] = 'hello';

            console.log(a++b++c++d++e);

       }

        a();//不带参数

//h__e__l__l__o

    var b=(name,password)=>{

         

            console.log("用户名:"+name+",密码:"+password);

       }

      b("张三","123456");//带参数

//用户名:张三,密码:123456

        });
 

1.7.

객체 확장

1.8.

속성의 간결한 표현

ES6

객체의 속성과 메소드로 직접 작성됩니다. 이런 종류의 글은 더 간결합니다.

var foo = 'bar';

var baz = {foo};

baz // {foo: "bar"}

// 等同于var baz = {foo: foo};

  

上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。

1.9. 属性的遍历

ES6 一共有5种方法可以遍历对象的属性。

1for...in

for...in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。

2Object.keys(obj)

Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)。

3Object.getOwnPropertyNames(obj)

Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)。

4Object.getOwnPropertySymbols(obj)

Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性。

5Reflect.ownKeys(obj)

Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 或字符串,也不管是否可枚举。

以上的5种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。

  • 首先遍历所有属性名为数值的属性,按照数字排序。

  • 其次遍历所有属性名为字符串的属性,按照生成时间排序。

  • 最后遍历所有属性名为 Symbol 值的属性,按照生成时间排序。

Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })

// ['2', '10', 'b', 'a', Symbol()]

  

上面代码中,Reflect.ownKeys方法返回一个数组,包含了参数对象的所有属性。这个数组的属性次序是这样的,首先是数值属性210,其次是字符串属性ba,最后是 Symbol 属性。

 

注释:对于Object.valuesES2017刚出来的函数,大多数浏览器不支持,暂时就不列出来了

위 내용은 배열, 함수, 객체에 대한 JavaScript ES6 확장의 공통 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.