aprendizaje ES6 (9) --- objetos

1, las propiedades de objeto de expresión sucinta

  ES6, si el valor de la propiedad es una variable, si los nombres y valores de los atributos de objetos son los mismos, entonces usted puede utilizar una redacción sencilla

deja que key = "clave" 
dejó valor = "valor" 
dejó obj = {clave, valor}

  El método también puede ser propiedad abreviada

obj = let { 
  Método () {el console.log ( "método abreviado" )}           
} 

// utilizado en la incubadora y captadores 
const Carrito = { 
  _Ruedas: . 4 , 

  a colocar ruedas () { 
    devolver  las este ._wheels; 
  }, 

  SET Ruedas (valor ) { 
    SI (valor < The esta ._wheels) {
       de banda  nueva nuevo error ( 'valor es demasiado pequeño!' ); 
    } 
    el este ._wheels = valor; 
  } 
}

  Cabe señalar que el método no se puede utilizar la abreviatura constructor

 

2, nombre de la propiedad de expresión

  ES6 usado el nombre definido argumento propiedades de objeto, el aumento de expresión se puede definir, a sólo expresiones necesidad entre corchetes ([]), pero no se puede utilizar en conjunción con las propiedades de expresión de brevedad

. 1 la propKey = 'foo' dejar ;
 2  
3. Let obj = {
 4.    [PropKey]: a true ,   // expresión define el nombre del atributo 
5.    : [ 'A' + 'BC'] 123
 6.  ;}
 7.  // objeto nombre de método también se puede utilizar para definir la expresión 
8. Let obj = {
 9.    [ 'H' + 'Ello' ] () {
 10      retorno 'Hola' ;
 . 11    }
 12 es  };
 13 es  
14 obj.hello () // Hola 
15  
16  // no se puede utilizar con expresiones simples 
17. const foo = 'bar' ;
18 const baz = {[foo]};

  Nota: Cuando la expresión es una definición del atributo nombre de un objeto, automáticamente se convierte en una cadena [object Object]

 

3, el nombre de los nuevos método devuelve objeto de atributo el nombre del método //

  En la propiedad no se encuentra en este método, pero si está en un setter y getter, el nombre de los métodos get y set de objetos

const obj = { 
  get foo () {}, 
  conjunto foo (x) {} 
}; 

obj.foo.name 
// TypeError: No se puede leer la propiedad 'nombre' de indefinido 

descriptor const = Object.getOwnPropertyDescriptor (obj, 'foo' ); 

descriptor.get.name // "conseguir foo" 
descriptor.set.name // "conjunto foo"

  Si la función es una función para bind o configuración Función bind, atributo de nombre con el nombre mismo atributo Función

  Si el nombre del método es utilizar el tipo de símbolo, el tipo de este símbolo Descripción Vueltas

const key1 = Símbolo ( 'description' ); 
const key2 = Símbolo (); 
dejar que obj = { 
  [key1] () {}, 
  [key2] () {}, 
}; 
obj [key1] .name // "[Descripción]" 
obj [key2] .name // ""

 

4, el atributo enumeración traversal y

  Cada propiedad de un objeto tiene una descripción del objeto (el descriptor), para controlar el comportamiento de la propiedad (como puede ser atravesado, puede ser modificado, valores, configurable)

  Para obtener estos actos por Object.getOwnPropertyDescriptor () método

{Obj = foo let: 123 }; 
Object.getOwnPropertyDescriptor (obj, 'foo' )
 //   { 
//     Valor: 123, valor // 
//     permisos de escritura: true, // escritura 
//     Enumerable: true, // lata enumeración 
@     configurable: configurable a true // 
//   }

 

Actualmente, hay cuatro operativo ignorados enumerablepara la falsepropiedad.

  • for...inLoop: solamente atraviesan el objeto y heredada misma propiedad enumerable.
  • Object.keys(): Devuelve los nombres de todos el propio objeto clave de propiedad enumerable.
  • JSON.stringify(): Sólo en sí objeto serializado propiedad enumerable.
  • Object.assign(): No haga caso enumerablede la falsepropiedad, sólo una copia de las propias propiedades enumerables del objeto.

5, objeto extendido operador (...) // con la matriz, excepto que: matriz de bits deconstrucción, y tienen las llaves cuando se deconstruye el objeto;

   Deje obj copia superficial del objeto ampliadas de operación puede estar sujeto utilizadas = {{... A: 1, b 2}}

   El objeto combinado se puede dejar obj = {... {a: 1, b: 2}, ... {c: 3, d: 4}} es equivalente a Object.assign ({}, {a: 1, b : 2}, {c: 3, d: 4}); Note que si el objeto de fusionar el mismo atributo de nombre, entonces el último sobre el primero haría

6, se determina el operador de la cadena (?). (ES2020 nuevo)

  Interfaz de llamada en el trabajo, obtener el objeto dentro de una propiedad de múltiples capas ocurrir, sin embargo, será por lo tanto, la determinación ES2020 nuevo operador de la cadena del caso de una propiedad que no existe entre el error, si el atributo no existe en algún lugar en el medio se devuelve indefinido  

1  // 之前写法
2 const firstName = (mensaje
 3    && message.body
 4    && message.body.user
 5    && message.body.user.firstName) || 'por defecto' ;
6  
7   // 链判断运算符
8 const firstName = mensaje? .Body? .User? .FirstName || 'defecto';

 

7, el operador de Null determina (??) (ES2020 nuevo)

  valores por defecto conjunto general de las variables del modelo que utilizaremos el cortocircuito mecanismo str || "cadena", entonces la variable str es "", 0, null, sin definir, se les asignará el falso valor por defecto, si y sólo si la variable es null y undefined cuando, usará el valor por defecto, no se puede utilizar este método;

  juicio operador Null Así ES2020 añadió, sólo cuando el valor de la variable es nulo o no definido, se asignará el valor predeterminado

const headerText = response.settings.headerText ?? '¡Hola Mundo!' ; 

const animationDuration = response.settings.animationDuration ?? 300 ; 

const ShowSplashScreen = response.settings.showSplashScreen ?? verdadera ;

  Tenga en cuenta que, si cuando se utiliza con una pluralidad de operadores lógicos, necesidad de uso () indica una prioridad, de lo contrario un error

 

Supongo que te gusta

Origin www.cnblogs.com/newttt/p/12601636.html
Recomendado
Clasificación