[JavaScript] - "Reaprender el front-end" 02 Objetos - Orientado a objetos o basado en objetos

Que es un objeto:

Desde la perspectiva de la cognición humana, un objeto debe ser una de las siguientes cosas:
1. algo que se puede tocar o ver
2. algo que el intelecto humano puede entender
3. algo que puede guiar el pensamiento o la acción (imaginar o acción imponente) cosas.

Características de los objetos JavaScript:

No importa qué lenguaje de programación usemos, primero debemos entender las características esenciales de los objetos.

En resumen, los objetos tienen las siguientes características:
Los objetos son identificables de forma única : incluso dos objetos idénticos no son el mismo objeto.
Los objetos tienen estados : Los objetos tienen estados, y el mismo objeto puede estar en diferentes estados.
Los objetos tienen comportamiento : es decir, el estado de un objeto puede cambiar debido a su comportamiento.

 Únicamente identificable:

En términos generales, la identificación única de objetos en varios idiomas está representada por direcciones de memoria , y los objetos tienen direcciones de memoria de identificación única, por lo que tienen una identificación única.

estado y comportamiento:

Respecto a la segunda y tercera características de los objetos “ estado y comportamiento ”, diferentes lenguajes utilizan diferentes términos para describirlos de manera abstracta
, tales como:

Se llaman " variables miembro " y " funciones miembro " en C++,

Java los llama " propiedades " y " métodos ",

En JavaScript, el estado y el comportamiento se unifican y abstraen como " propiedades ".

El siguiente fragmento de código,

 o es un objeto, y para JavaScript, d y f son dos propiedades ordinarias. Simplemente está escrito de otra manera.

var o = {
     d: 1,
     f() {
         console.log(this.d);
     } 
};

La característica única de los objetos en JavaScript es que los objetos son muy dinámicos, ya que JavaScript brinda a los usuarios la capacidad de agregar estado y comportamiento a los objetos en tiempo de ejecución. Por ejemplo, JavaScript permite agregar propiedades a los objetos en tiempo de ejecución.

 Hay dos tipos de propiedades de objetos de JavaScript: propiedades de datos y propiedades de acceso (captador/establecedor) .

 Atributo de datos:

Los atributos de datos tienen cuatro características.
value : Es el valor del atributo.
writable : determina si se puede asignar el atributo.
enumerable : determina si for in puede enumerar la propiedad.
configurable : determina si el atributo se puede eliminar o el valor de la característica se puede cambiar.

En la mayoría de los casos, solo nos importa el valor del atributo de datos.

Propiedades del accesor (getter/setter):

También tiene cuatro características.
getter : función o undefined, que se llama al obtener el valor de la propiedad.
setter : función o indefinida, que se llamará al establecer el valor de la propiedad.
enumerable : determina si for in puede enumerar la propiedad.
configurable : determina si el atributo se puede eliminar o el valor de la característica se puede cambiar.

La propiedad de acceso permite que la propiedad ejecute código cuando se lee y se escribe. Permite a los usuarios obtener valores completamente diferentes al escribir y leer propiedades. Se puede considerar como un azúcar sintáctico para las funciones.

Por lo general, el código utilizado para definir atributos generará atributos de datos , donde los valores predeterminados para escritura, enumeración y configuración son verdaderos . Podemos usar la función incorporada Object.getOwnPropertyDescripter para ver:

 var o = { a: 1 };
 o.b = 2;

 //a 和 b 皆为数据属性
 Object.getOwnPropertyDescriptor(o,"a") // {value: 1, writable: true, enumerable: true, configurable: true}
 Object.getOwnPropertyDescriptor(o,"b") // {value: 2, writable: true, enumerable: true, configurable: true}

Aquí se utilizan dos sintaxis para definir atributos. Se puede encontrar que los atributos definidos de esta manera son todos atributos de datos escribibles,
enumerables y configurables. El valor predeterminado es verdadero.

Si queremos cambiar las características de la propiedad , o definir la propiedad de acceso , podemos usar Object.defineProperty , el ejemplo es el siguiente:

(Si no entiende el método Object.defineProperty, puede leer mi nota Object.defineProperty primero , y luego lo entenderá muy bien )

 var o = { a: 1 };
 Object.defineProperty(o, "b", {value: 2, writable: false, enumerable: false, configurable: false})
//a 和 b 都是数据属性,但特征值变化了
 Object.getOwnPropertyDescriptor(o,"a"); // {value: 2, writable: true, enumerable: true, configurable: true}
 Object.getOwnPropertyDescriptor(o,"b"); // {value: 2, writable: false, enumerable: false, configurable: false}
 
 o.b = 3;
 console.log(o.b); // 2

Debido a que la función de escritura es falsa, reasignamos b y el valor de b no cambiará.

Al crear un objeto, también puede usar las palabras clave get y set para crear propiedades de acceso , el código es el siguiente:

var o = { get a() { return 1 } };

console.log(o.a); // 1

Las propiedades de acceso son diferentes de las propiedades de datos en que las funciones getter o setter se ejecutan cada vez que se accede a una propiedad. Aquí nuestra
función getter devuelve 1, por lo que oa obtiene 1 cada vez.

        De hecho, el tiempo de ejecución de un objeto JavaScript es una " colección de atributos ". El atributo usa una cadena o símbolo como clave , y usa un valor de característica de atributo de datos o un valor de característica de atributo de acceso como valor .

        Un objeto es una estructura de índice de un atributo (la estructura de índice es una estructura de datos común, podemos entenderla como un diccionario que puede usar la clave para encontrar el valor a una velocidad relativamente rápida ).

Tomemos el objeto anterior como ejemplo, puedes imaginar:

        "una" clave de 是。
        {escribible: verdadero, valor: 1, configurable: verdadero, enumerable: verdadero} 是 valor。

Es una característica de los objetos de JavaScript que el símbolo se puede usar como nombre de propiedad.

JavaScript es un lenguaje orientado a objetos porque el sistema de objetos altamente dinámico de JavaScript le permite emular la mayoría de los paradigmas de programación orientados a objetos.

Supongo que te gusta

Origin blog.csdn.net/qq_50497708/article/details/128176296
Recomendado
Clasificación