>  기사  >  웹 프론트엔드  >  ES6의 향상된 객체 리터럴에 대한 간략한 소개

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

不言
不言앞으로
2018-11-14 15:53:272467검색

이 글은 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으로 문의하시기 바랍니다. 삭제