ES6의 향상된 객체 리터럴에 대한 간략한 소개

不言
풀어 주다: 2018-11-14 15:53:27
앞으로
2502명이 탐색했습니다.

이 글은 ES6의 향상된 객체 리터럴에 대해 간략하게 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

Overview

es6에서는 객체 리터럴의 구문이 향상되었습니다

더 짧은 속성 선언

속성 이름이 속성 값에서 참조하는 변수 이름과 일치하면 직접 생략할 수 있습니다

let name="jack"
// es6之前
var obj={name:name} // {name:"jack"}
// es6 
let obj={name}  // {name:"jack"}
로그인 후 복사

함수 선언 단축

속성 이름이 속성값(함수)의 함수 이름이 일치하거나 속성값(함수)에 함수명이 없을 경우 함수 키워드와 속성명을 생략할 수 있습니다function关键字和属性名

// es6之前
var obj={sum: function(a, b){return a+b}}
// es6
let obj={sum(a, b){return a+b}} //{sum:function(a, b){return a+b}}
로그인 후 복사

可动态计算的属性名

属性名可以动态变化

let key="name"
let obj={[key]:"jack"} // {name:'jack'}
로그인 후 복사

总览

let key="name"
let age=23
let person={
    [key]:"jack",
    getName(){return "jack"},
    age
} // {name:"jack",getName:function(){return "jack"},age:23}
로그인 후 복사

使用babel翻译

源码

let key="name"
let age=23
let person={
    [key]:"jack",
    getName(){return "jack"},
    age
}
로그인 후 복사

翻译后可以发现,使用的是 Object.defineProperty

"use strict";
var _person;
function _defineProperty(obj, key, value) {
 if (key in obj) {
  Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
   } else {
    obj[key] = value; 
    } 
    return obj; 
    }

var key = "name";
var age = 23;
var person = (_person = {}, _defineProperty(_person, key, "jack"), _defineProperty(_person, "getName", function getName() {
    return "jack";
}), _defineProperty(_person, "age", age), _person);
로그인 후 복사
#🎜🎜 #동적으로 계산된 속성 이름

속성 이름은 동적으로 변경 가능
rrreee

Overview#🎜🎜#rrreee#🎜🎜#바벨 번역 사용#🎜🎜##🎜🎜# 소스코드#🎜🎜#rrreee#🎜🎜#번역 후 보실 수 있으며, Object.defineProperty를 사용하여 구현하였습니다#🎜🎜#rrreee#🎜🎜##🎜🎜##🎜🎜#

위 내용은 ES6의 향상된 객체 리터럴에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿