JavaScript para desenvolvedores ASP.NET

Sofri um choque de culturas ao me adptar para trabalhar com JavaScript,iniciando pelo fato de não ser uma linguagem orientada-a-objetos

Eu nunca vi com “bons olhos” a linguagem JavaScript.Sempre me pareceu que apesar de qualquer beneficío que a linguagem
pudesse
trazer,a incapacidade do JavaScript de especificar um tipo de dado para uma variavel mantinha a linguagem afastada de ser
uma “real” linguagem” de programação – pelo menos quando se trata de negócios.

Entretanto,com o passar do tempo eu fui utilizando e me aprofundando mais no estilo de programação AJAX,e me peguei começando
a desenvolver um certo respeito pela linguagem.

Parte do motivo pelo qual eu não gostava de JavaScript era de certa forma falta de conhecimento sobre a linguagem meu.
Desde que comecei a programar,eu trabalhei ou com linguagem orientada-a-objetos.
Eu me aventurei por varias linguagens,mas sempre relacionadas com orientção-a-objetos.

O que mudou um pouco minha visão sobre JavaScript,foi um livro sobre JavaScript de Douglas Crackford chamado JavaScript:The
Good Parts
.Os créditos de Crackford para escrever um livro sobre JavaScript são excelentes,entre outras qualificações,ele
é responsável,pelo formato JSON que é o responsável por transmitir dados estruturados,entre cliente e servidor
em aplicações AJAX.

O livro tem algumas revisões negativas no Amazon.com,que dizem que o livro é curto e definitivamente não ensina vocÊ
a como programar em JavaScript.Ao invés disso,o livro foca em trazer conceitos essenciais da linguagem ao leitor,conceito
esse que eu havia ignorado.

Então essa “clareada” dada por programadores “reais” JavaScript,é a base para este post:para descrever,em termos que fazem
sentido para programadores aSP.NET, os conceitos fundamentais de JavaScript,e como eles são diferentes do conceitos de linguagens
OOP que estamos acostumados.

objetos vs protótipos

Diferentemente de linguagens do lado-servidor que eu escrevia códigos,JavaScript não é orientado a objetos.
Ao invés disso,é organizado em protótipos.Em JavaScript vocÊ pode definir estrutura de dados,e depois ou usa-las ou copia-las.
A habilidade de copiar uma estrutura,para criar uma nova, siginifica que qualquer estrutura pode ser um protótipo para
estruturas subsequentes.Entretanto,diferentemente de uma classe na programação orientada a objetos,onde a definição da estrutura
é inviolável,protótipos e suas cópias podem ser modificados ou extendidos a qualquer momento.

Esse código por exemplo,define uma estrutura de dados que contém duas variaveis:uma chamada id(inicializada com uma string
de tamanho zero)e uma chamada dataOrdered (inicializada com um objeto de Data).Essa estrutura de dados pode ser referenciada
através da variavel salesOrder.

var salesOrder = {
id: “”,
dateOrdered: new Date()
};

Eu posso começar a utilizar esta estrutura imediatamente.Esse código,por exemplo,atribui a propriedade id para um valor string.
(E a boa noticia!A propriedade id irá aparecer no IntelliSense da variavel saleOrder).

salesOrder.id = “A1230”;

Entretanto,eu também posso criar cópias desta estrutura tratando-a como um protótipo.Para copiar a estrutura,eu criei uma
função simples,atribui a propriedade prototype da função para minha estrutura de dados original,depois usei a palavra-chave
new do JavaScript para criar uma nova estrutura a partir daquela estrutura.Esse código cria uma nova cópia da minha estrutura
e referencia ela na variavel através da variavel chamada backOrder.

var SalesOrderGenerator = function(){};
SalesOrderGenerator.prototype = salesOrder;
var backOrder = new SalesOrderGenerator;

Eu posso agora usar essa nova cópia da estrutura de dados:

backOrder.id = “B4567”;

Se esse processo não fosse diferente o bastante,JavaScript permite a você adicionar dinamicamente,um novo elemento para sua
nova cópia simplesmente atribuindo o elemento a um valor.Esse exemplo adiciona um elemento outOfStock para a versão da estrutura
backOrder:

backOrder.outOfStock = true;

Tudo isso,com certeza,é obvio para programadores com experiência em JavaScript.Mas para membros da comunidade ASP.NET que estão
migrando, de código do lado-servidor para código do lado-cliente,existe com certeza um choque de culturas em jogo.

Não ajuda muito saber que uma palavra chave familiar como new aparece em javascript.Uma das melhores regras para seguir,em
design de interfaces de usuário é:”Coisas que fazem a mesma coisa devem parecer iguais,coisas que fazem coisa diferentes,devem
parecer diferentes”.Voltando a palavra chave new,num ambiente diferente essa palavra pode parecer útil,mas na verdade,isso
me encorajou a pensar em javaScript como uma liguagem OOP quando na verdade não é.

Eu ainda estou me ajustando,ah mas se pelo menos eu pudesse declarar uma variável com um simples tipo de dado…