objeto method es6 crear clases and javascript javascript-events

method - javascript add function to constructor



Concepto de constructor en javascript (5)

Cualquier función que se llame con un new operador actúa como un constructor, por this que se asignará al nuevo objeto y lo señalará. También se ejecutará el código dentro del constructor y el nuevo objeto ( perObj ) obtendrá propiedades.

En una de mis preguntas, obtuve el siguiente código como una de las respuestas. Mi comprensión del idioma ha llegado ha sido mucho mejor ahora, solo tengo una pequeña pregunta.

var person = function() { this.firstName = ""; this.lastName = ""; } person.prototype.showFullName = function () { console.log(this.firstName + " " + this.lastName); } var perObj = new person(); perObj.firstName = "Penelope"; perObj.lastName = "Barrymore"; perObj.showFullName();

Considerando el objeto,

var person = function() { this.firstName = ""; this.lastName = ""; }

y cuando llamo a este objeto usando,

var perObj = new person();

¿Esto es similar al tipo de cosas constructor?

El momento en que un código

var perObj = new person();

se invoca se ejecutarán automáticamente las siguientes dos líneas?

this.firstName = ""; this.lastName = "";

Y también en uno de los blogs que estaba estudiando si el nombre del archivo es Samplescript.js y si una función está escrita usando el mismo nombre dentro de este como var Samplescript=function(){} , ¿se considerará que esta función es un constructor? Por favor, aclarame esto.

No recibo ninguna respuesta satisfactoria sobre el constructor prácticamente, aunque teóricamente las cosas son claras, en este ejemplo, la forma en que está escrito hace que la comprensión sea clara.


En primer lugar, la person es una función regular de JavaScript. Cuando lo llamas, por supuesto, líneas:

this.firstName = ""; this.lastName = "";

son ejecutados. La función Constructor es más bien un concepto que algo realmente existente en el lenguaje JS. Necesita constructores para crear nuevos objetos similares llamando al new MyCtr() . Al mismo tiempo, necesita funciones regulares para encapsular parte de la lógica y hacerla reutilizable en diferentes lugares sin copiar / pegar el código.

Puede usar todas las funciones en JavaScript como constructor. Simplemente agregue una new palabra clave al frente de la expresión de llamada de función. Esto cambia el contexto de ejecución de la función. Sin new la función se ejecuta contra el objeto global ( window en un navegador). Y this variable dentro de la función se refiere al contexto.

No todas las funciones están listas para ser un constructor. Usualmente, las funciones constructor están haciendo algo con this variable que es una referencia a un objeto que se crea durante la new MyCtr() llamada new MyCtr() . Además, las funciones de constructor nunca devuelven un valor.

Veamos algunos ejemplos (puedes ejecutarlo directamente en la consola del navegador):

function foo() { this.a = 1; } foo(); // using function as a regular function. Ctx is window. console.log(window.a); // prints "1" foo.call(window); // explicitly specify execution ctx. The same as just foo() call var instance = new foo(); // using foo as a constructor console.log(instance.a); // prints "1" // actually you can do it without new keyword var instance = {}; // manually create new object foo.call(instance); // manually call foo against this object console.log(instance.a); // prints "1" // However, the code above is not strictly equivalent to the code using new. // It omits the concept of prototype, but it''s enough for our current task.

En cuanto a funciones y archivos. No existe tal cosa en el lenguaje como en Java que cada clase debe colocarse en el archivo separado. Puede poner todas sus funciones dentro de un archivo y luego usarlo como constructores o no. Sin embargo, la mejor práctica es residir en una función de constructor (leer como clase ) por un archivo (llamado módulo).


Hay algunas formas de definir clases de Javascript e invocarlas con un constructor. Pero recuerda que JavaScript no tiene clases.

  1. Usa una función
  2. El uso de literales de objetos
  3. Un singleton que usa una función

Puede encontrar un excelente artículo al respecto aquí: 3 formas de definir una clase de Javascript


Parece que hay algunos agujeros en tu comprensión. Espero poder ayudar.

Primero, la sintaxis convencional tradicional para una función constructora es la function CapitalisedFunctionName()

function Person() { this.firstName = ""; this.lastName = ""; }

Nota: esto no es un objeto . De su pregunta, esto no está claro, usted entiende eso.

En este punto, puede agregar al prototipo del que heredarán todos los objetos nuevos creados a partir de ese constructor. Este método modificado de su ejemplo estará disponible para todos los objetos nuevos.

Person.prototype.fullname = function () { return this.firstName + " " + this.lastName; }

Ahora, la función de constructor le permite crear nuevas instancias de objetos . Entonces cuando escribes:

var perObj = new person();

está llamando a la función de constructor , creando una nueva instancia de objeto y asignando esa instancia a la variable perObj .

Cuando crea una nueva instancia de objeto, el objeto contiene las firstName y lastName las que se puede acceder de este modo:

perObj.firstName; perObj.lastName;

Tenga en cuenta que en este momento solo tienen cadenas vacías asignadas.

Y puedes llamar a ese método también:

perObj.fullname();

Pero, nuevamente, en este punto, perObj.fullname(); no le dará nada porque firstName y lastName son cadenas vacías.

Puede definirlos como lo hace en su ejemplo: `perObj.lastName = ''Jones'', o incluso podría cambiar la forma de crear el objeto en primer lugar, que a menudo es el método preferido:

Considera esto:

function Person(first, last) { this.firstName = first; this.lastName = last; } var perObj = new Person(''Dave'', ''Jones'');

Ahora perObj tendrá esas propiedades prellenadas:

perObj.firstName // Dave perObj.lastName // Jones perObj.fullname() // Dave Jones


cualquier función en JavaScript puede actuar como un constructor cuando la función se invoca con un nuevo operador .

Ahora, ¿qué hace un constructor? crea / instancia un objeto desde la función de constructor. como se muestra en la imagen de abajo.

ENLACE , explica los fundamentos muy claramente.

que es this ?

cuando esta función de constructor se invoca con new, this apunta al nuevo objeto creado en esa invocación. y en ese objeto establecemos firtName y lastName (es la inicialización del nuevo objeto creado).

Ahora cuando agregamos métodos al prototipo del constructor, eso se comparte entre todos los objetos creados usando la función de constructor (la imagen lo explica un poco más)

y con respecto a su última consulta "Y también en uno de los blogs que estaba estudiando si el nombre del archivo es Samplescript.js y si una función está escrita usando el mismo nombre dentro de este como var Samplescript = function () {}, ¿esta función será considerado un constructor? Por favor aclararme esto "

cualquier función en JavaScript puede actuar como un constructor cuando la función se invoca con un nuevo operador, y no es la forma en que dice el blog .

así que por favor deja de leer ese blog, el enlace que brindé es un muy buen punto de partida