SlideShare una empresa de Scribd logo
1 de 25
¿Cuál es el
problema con
JavaScript?
¿Por qué
debemos
aprender
Javacript?
Comparando los lenguajes
C#
Tipado fuerte
Estático
Herencia clásica
Clases
Constructores
Métodos
JavaScript
Tipado débil
Dinámico
Herencia por prototipos
Funciones
Funciones
Funciones
Demo
COMPARACIÓN DE LENGUAJES
Duck Typing
Duck typing
public class Persona
{
public string Name { get; set; }
}
public class Educado
{
public void Saluda(Persona persona)
{
Console.WriteLine("Hola {0}", persona.Name);
}
}
Duck typing
var Persona = function (name) {
this.name = name;
}
function educado(arg1) {
console.log('Hola ' + arg1.name);
}
var p = new Persona("Luis");
educado(p);
educado({ name: "Juan" });
JavaScript
Tipos
 Tipos por valor
 boolean
 string
 number
 Tipos por referencia
 object
 Delegados
 function
 Especiales
 null
 undefined
Ámbito global
Toda variable no asignada a un objeto se asigna por defecto a window.
var myVar = 1;
function myFunction() {
alert(myVar);
alert(window.myVar);
}
myFunction();
Variable hoisting
Los { } no crean ámbito como en C# (Sólo las funciones)
public MainPage()
{
if (true)
{
var title = "Main";
}
this.InitializeComponent();
}
La variable declarada dentro de una función sube hasta el principio de la función.
http://jsfiddle.net/luisruizpavon/BXv7F/
this
C#
 La palabra clave this hace referencia a la instancia actual de la clase.
JS
 Hace referencia al propietario de la función que la está invocando y se
puede modificar haciendo uso de call/apply
http://jsfiddle.net/luisruizpavon/q2GeU/
this - Patrón de invocación por
método
Una función es almacenada como propiedad de un objeto convirtiéndose así
en lo que denominamos un método.
var myObj = {
name: 'Luis',
lastName: 'Ruiz',
fullName: function () {
return this.name + ' ' + this.lastName;
}
};
alert(myObj.fullName());
Truthy y Falsy
 Valores que siempre dan false:
 false
 0
 ""
 null
 undefined
 NaN
Todos los demás valores son siempre true, incluyendo “0”, “false”, funciones
vacías, arrays vacíos y objetos vacíos.
Los operadores ==/!=
Estos 2 operadores no funcionan igual que en C#. Determinan la igualdad con
type coalescing (Intenta convertir el valor cast)
alert("ola ke ase" == "ola ke ase");
alert(1 == 1);
alert(1 == "1");
Usar siempre === y !=== (.Equals() de C#)
http://jsfiddle.net/luisruizpavon/RXaU3/
Funciones I
Pueden parecernos que son como los métodos en C#, pero no es así:
function myFunction(arg1, arg2, arg3) {
alert(arg1);
alert(arg2);
alert(arg3);
}
myFunction(1);
Funciones II
 ¿Sobrecarga de funciones?
function myFunction(arg1) {
alert("Uno");
}
function myFunction(arg1, arg2) {
alert("Dos");
}
function myFunction(arg1, arg2, arg3) {
alert("Tres");
}
myFunction(1);
Funciones III
 El objeto “arguments”
 Sólo está disponible en el cuerpo de la función
function myFunction(arg1) {
alert(arguments.length);
}
myFunction(1);
Funciones IV
 Todas las funciones retornan un valor
 Sino está definido, retorna ‘undefined’
 return; También retorna ‘undefined’
function myFunction() {
return;
}
var my = myFunction(1);
alert(typeof my);
Funciones V
 Las funciones son objetos. Tienen propiedades y funciones.
 Podemos pasar como parámetros de una función otras funciones.
function myFunction(arg1) {
alert(arg1);
}
alert(myFunction.length);
alert(myFunction.toString());
Patrón módulo
 Nos ayuda a mantener el contexto global lo más limpio y seguro posible.
 Bootstraper
 Un ejemplo de uso son los plugins de jQuery.
Frameworks
 Require.js – Cargador de módulos JavaScript (ServiceLocator)
 Underscore.js – Utilidades (Métodos extensores)
 jQuery
 TypeScript
 linq.js - LINQ for JavaScript
 Backbone - MVC
 Knockout - MVVM
 AngularJS – Google
 Handlebars.js
 …
Herramientas
 Developer Tools
 Firebug
 Chrome Developer Tools
 JSHint - http://jshint.com
 jsfiddle - http://jsfiddle.net
 Visual Studio
 WebStorm - Jetbrains

Más contenido relacionado

La actualidad más candente

La estructura basica_para_c_
La estructura basica_para_c_La estructura basica_para_c_
La estructura basica_para_c_GamePlayer35
 
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...Jose Emilio Labra Gayo
 
Curso iOS
Curso iOSCurso iOS
Curso iOSPlatzi
 
Unidad 2
Unidad 2Unidad 2
Unidad 2UTP, TA
 
Las funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetosLas funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetosFrancisco Javier Arce Anguiano
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup
 
Estructura basica de_c_
Estructura basica de_c_Estructura basica de_c_
Estructura basica de_c_LaishaXime
 
Introducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScriptIntroducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScriptFrancisco Javier Arce Anguiano
 
Investigacion sobre carga de metodos
Investigacion sobre carga de metodosInvestigacion sobre carga de metodos
Investigacion sobre carga de metodosArisRojas4
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Por que java
Por que javaPor que java
Por que javareivax
 
Tipo de dato DOUBLE
Tipo de dato DOUBLETipo de dato DOUBLE
Tipo de dato DOUBLEkenixxx
 

La actualidad más candente (19)

La estructura basica_para_c_
La estructura basica_para_c_La estructura basica_para_c_
La estructura basica_para_c_
 
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
 
Curso iOS
Curso iOSCurso iOS
Curso iOS
 
Int. programacion
Int. programacionInt. programacion
Int. programacion
 
Leccion 2 Java
Leccion 2 JavaLeccion 2 Java
Leccion 2 Java
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Las funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetosLas funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetos
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
Estructura basica de_c_
Estructura basica de_c_Estructura basica de_c_
Estructura basica de_c_
 
Introducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScriptIntroducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScript
 
JAVA ORIENTADO A OBJETOS - INTERFACES
JAVA ORIENTADO A OBJETOS - INTERFACESJAVA ORIENTADO A OBJETOS - INTERFACES
JAVA ORIENTADO A OBJETOS - INTERFACES
 
Poo 1
Poo 1Poo 1
Poo 1
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
 
Investigacion sobre carga de metodos
Investigacion sobre carga de metodosInvestigacion sobre carga de metodos
Investigacion sobre carga de metodos
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Por que java
Por que javaPor que java
Por que java
 
JAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGAJAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGA
 
Tipo de dato DOUBLE
Tipo de dato DOUBLETipo de dato DOUBLE
Tipo de dato DOUBLE
 
Estructura básica de pascal
Estructura básica de pascalEstructura básica de pascal
Estructura básica de pascal
 

Similar a Javascript C#

Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)Oliver Centeno
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scaladhaat
 
Elementos del Hardware y Software
Elementos del Hardware y SoftwareElementos del Hardware y Software
Elementos del Hardware y Softwarecarlosadrianev
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaMicael Gallego
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript David Ballén
 
Introducción Javascript.pdf
Introducción Javascript.pdfIntroducción Javascript.pdf
Introducción Javascript.pdfrhapetus
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básicocamposer
 
Ocho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScriptOcho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScriptDavid Ballén
 
¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticasjaespinmora
 
JavaScript para Programadores Java
JavaScript para Programadores JavaJavaScript para Programadores Java
JavaScript para Programadores JavaCarlos A. Iglesias
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVMJano González
 

Similar a Javascript C# (20)

Php
PhpPhp
Php
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
Tema2[php]
Tema2[php]Tema2[php]
Tema2[php]
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Presentación 09 Cajas blanca
Presentación 09 Cajas blancaPresentación 09 Cajas blanca
Presentación 09 Cajas blanca
 
Elementos del Hardware y Software
Elementos del Hardware y SoftwareElementos del Hardware y Software
Elementos del Hardware y Software
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
 
Introducción Javascript.pdf
Introducción Javascript.pdfIntroducción Javascript.pdf
Introducción Javascript.pdf
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básico
 
Ocho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScriptOcho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScript
 
¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
JavaScript para Programadores Java
JavaScript para Programadores JavaJavaScript para Programadores Java
JavaScript para Programadores Java
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVM
 
Ruby intro
Ruby introRuby intro
Ruby intro
 
Java 8
Java 8Java 8
Java 8
 
C ++
C ++C ++
C ++
 
Programacion
ProgramacionProgramacion
Programacion
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de Programacion
 

Más de Manuel Antonio

Mule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o authMule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o authManuel Antonio
 
Mule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando CallbackMule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando CallbackManuel Antonio
 
Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1Manuel Antonio
 
Mule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conectorMule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conectorManuel Antonio
 
Mule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuthMule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuthManuel Antonio
 
Mule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuthMule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuthManuel Antonio
 
Mule cloud connectors1-conectores
Mule cloud connectors1-conectoresMule cloud connectors1-conectores
Mule cloud connectors1-conectoresManuel Antonio
 
Mule Cloud Connectors1-Conectores
Mule Cloud Connectors1-ConectoresMule Cloud Connectors1-Conectores
Mule Cloud Connectors1-ConectoresManuel Antonio
 
Mule Cloud Connectors-Instalacion
Mule Cloud Connectors-InstalacionMule Cloud Connectors-Instalacion
Mule Cloud Connectors-InstalacionManuel Antonio
 
Mule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos BasicosMule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos BasicosManuel Antonio
 
Mule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundoMule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundoManuel Antonio
 
Problema Educativo Mexico
Problema Educativo MexicoProblema Educativo Mexico
Problema Educativo MexicoManuel Antonio
 
NetBeans para Java, C, C++
NetBeans para Java, C, C++NetBeans para Java, C, C++
NetBeans para Java, C, C++Manuel Antonio
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en JavaManuel Antonio
 

Más de Manuel Antonio (20)

Mule Cloud-Conceptos
Mule Cloud-ConceptosMule Cloud-Conceptos
Mule Cloud-Conceptos
 
Mule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o authMule Cloud Connectors-Guardando y restaurando el estado o auth
Mule Cloud Connectors-Guardando y restaurando el estado o auth
 
Mule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando CallbackMule Cloud Connector-Personalizando Callback
Mule Cloud Connector-Personalizando Callback
 
Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1Mule Cloud Connectors-Configuracion OAuth1
Mule Cloud Connectors-Configuracion OAuth1
 
Mule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conectorMule Cloud Connectors-Autorizando el conector
Mule Cloud Connectors-Autorizando el conector
 
Mule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuthMule Cloud Connectors-Configuracion OAuth
Mule Cloud Connectors-Configuracion OAuth
 
Mule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuthMule Cloud Connector-Conectividad OAuth
Mule Cloud Connector-Conectividad OAuth
 
Mule cloud connectors1-conectores
Mule cloud connectors1-conectoresMule cloud connectors1-conectores
Mule cloud connectors1-conectores
 
Mule Cloud Connectors1-Conectores
Mule Cloud Connectors1-ConectoresMule Cloud Connectors1-Conectores
Mule Cloud Connectors1-Conectores
 
Mule Cloud Connectors-Instalacion
Mule Cloud Connectors-InstalacionMule Cloud Connectors-Instalacion
Mule Cloud Connectors-Instalacion
 
Mule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos BasicosMule Cloud Connectors-Conceptos Basicos
Mule Cloud Connectors-Conceptos Basicos
 
Mule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundoMule cloud connectors versus el resto del mundo
Mule cloud connectors versus el resto del mundo
 
Problema Educativo Mexico
Problema Educativo MexicoProblema Educativo Mexico
Problema Educativo Mexico
 
NetBeans para Java, C, C++
NetBeans para Java, C, C++NetBeans para Java, C, C++
NetBeans para Java, C, C++
 
JPA en NetBeans
JPA en NetBeansJPA en NetBeans
JPA en NetBeans
 
Serializacion Java
Serializacion JavaSerializacion Java
Serializacion Java
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en Java
 
Clases C#
Clases C#Clases C#
Clases C#
 
Array y Objects C#
Array y Objects C#Array y Objects C#
Array y Objects C#
 
SQL en Visual Studio
SQL en Visual StudioSQL en Visual Studio
SQL en Visual Studio
 

Último

🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 

Último (20)

🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 

Javascript C#

  • 1. ¿Cuál es el problema con JavaScript?
  • 3.
  • 4.
  • 5. Comparando los lenguajes C# Tipado fuerte Estático Herencia clásica Clases Constructores Métodos JavaScript Tipado débil Dinámico Herencia por prototipos Funciones Funciones Funciones
  • 8. Duck typing public class Persona { public string Name { get; set; } } public class Educado { public void Saluda(Persona persona) { Console.WriteLine("Hola {0}", persona.Name); } }
  • 9. Duck typing var Persona = function (name) { this.name = name; } function educado(arg1) { console.log('Hola ' + arg1.name); } var p = new Persona("Luis"); educado(p); educado({ name: "Juan" });
  • 11. Tipos  Tipos por valor  boolean  string  number  Tipos por referencia  object  Delegados  function  Especiales  null  undefined
  • 12. Ámbito global Toda variable no asignada a un objeto se asigna por defecto a window. var myVar = 1; function myFunction() { alert(myVar); alert(window.myVar); } myFunction();
  • 13. Variable hoisting Los { } no crean ámbito como en C# (Sólo las funciones) public MainPage() { if (true) { var title = "Main"; } this.InitializeComponent(); } La variable declarada dentro de una función sube hasta el principio de la función. http://jsfiddle.net/luisruizpavon/BXv7F/
  • 14. this C#  La palabra clave this hace referencia a la instancia actual de la clase. JS  Hace referencia al propietario de la función que la está invocando y se puede modificar haciendo uso de call/apply http://jsfiddle.net/luisruizpavon/q2GeU/
  • 15. this - Patrón de invocación por método Una función es almacenada como propiedad de un objeto convirtiéndose así en lo que denominamos un método. var myObj = { name: 'Luis', lastName: 'Ruiz', fullName: function () { return this.name + ' ' + this.lastName; } }; alert(myObj.fullName());
  • 16. Truthy y Falsy  Valores que siempre dan false:  false  0  ""  null  undefined  NaN Todos los demás valores son siempre true, incluyendo “0”, “false”, funciones vacías, arrays vacíos y objetos vacíos.
  • 17. Los operadores ==/!= Estos 2 operadores no funcionan igual que en C#. Determinan la igualdad con type coalescing (Intenta convertir el valor cast) alert("ola ke ase" == "ola ke ase"); alert(1 == 1); alert(1 == "1"); Usar siempre === y !=== (.Equals() de C#) http://jsfiddle.net/luisruizpavon/RXaU3/
  • 18. Funciones I Pueden parecernos que son como los métodos en C#, pero no es así: function myFunction(arg1, arg2, arg3) { alert(arg1); alert(arg2); alert(arg3); } myFunction(1);
  • 19. Funciones II  ¿Sobrecarga de funciones? function myFunction(arg1) { alert("Uno"); } function myFunction(arg1, arg2) { alert("Dos"); } function myFunction(arg1, arg2, arg3) { alert("Tres"); } myFunction(1);
  • 20. Funciones III  El objeto “arguments”  Sólo está disponible en el cuerpo de la función function myFunction(arg1) { alert(arguments.length); } myFunction(1);
  • 21. Funciones IV  Todas las funciones retornan un valor  Sino está definido, retorna ‘undefined’  return; También retorna ‘undefined’ function myFunction() { return; } var my = myFunction(1); alert(typeof my);
  • 22. Funciones V  Las funciones son objetos. Tienen propiedades y funciones.  Podemos pasar como parámetros de una función otras funciones. function myFunction(arg1) { alert(arg1); } alert(myFunction.length); alert(myFunction.toString());
  • 23. Patrón módulo  Nos ayuda a mantener el contexto global lo más limpio y seguro posible.  Bootstraper  Un ejemplo de uso son los plugins de jQuery.
  • 24. Frameworks  Require.js – Cargador de módulos JavaScript (ServiceLocator)  Underscore.js – Utilidades (Métodos extensores)  jQuery  TypeScript  linq.js - LINQ for JavaScript  Backbone - MVC  Knockout - MVVM  AngularJS – Google  Handlebars.js  …
  • 25. Herramientas  Developer Tools  Firebug  Chrome Developer Tools  JSHint - http://jshint.com  jsfiddle - http://jsfiddle.net  Visual Studio  WebStorm - Jetbrains

Notas del editor

  1. El Duck Typing, en los lenguajes de programación, es una técnica para determinar si un objeto es una instacia de una determinada clase basándose únicamente en los métodos que implementa.
  2. typeof operator Null & undefined example
  3. Recomendación: No contaminar window
  4. Recomendación: Hacer hoisting explicito
  5. Recomendación con ejemplo: Simplificar los condicionales, Incializar valores por defecto (Namespaces)
  6. Podemos almacenarla en una variable y luego invocarla (Delegado anónimo)