Olá, Gordos, tudo bem?
Bem, as vezes eu recebo a seguinte pergunta:
Por que acessamos, em JavaScript, métodos como split() e substring() nas strings se elas não são objetos? Isso ficaria “claro” de identificar se fosse um objeto mesmo, não?
var OGordo = { nossasComidas: function(){ var comidas = ["David: lasanha/massas", "Junior: macarronada", "Thiago: lasanha/pizza"]; alert(comidas[Math.round(Math.random() * (comidas.length - 1))]) } }; OGordo.nossasComidas();
Com este mesmo exemplo, observe a última linha. Veja que é chamado o método nossasComidas() no objeto OGordo. Certo? Agora me diz uma coisa com base no seguinte código:
var OGordo = "OGordo.com";
var first_part = OGordo.split(".")[0];
O que a variável first_part recebe? Ela recebe um objeto OGordo com um método split()? NÃO! Ela recebe um string com o método split()!
Ué… Mas string pode ser manipulada usando notação de objeto? NÃO!
O que acontece é que para cada valor primitivo de dados, ou seja, tipos númericos, string e booleano, o JavaScript tem uma classe de objeto correspondente. Então além de suportar aqueles tipos de dados primitivos, ele também suporta as classes Number, String e Boolean. Essas classes são empacotadoras dos tipos primitivos.
Um empacotador põe produtos na sacola de supermercado possui o mesmo valor dos seus respectivos dados primitivos, com a diferença que ele define métodos e propriedades que usamos para manipular esses dados.
Na prática: JavaScript consegue converter de forma flexível os valores de um tipo para outro. Quando nós usamos uma string em contexto de objeto, ou seja, acessamos propriedades e métodos deste, JavaScript cria internamente o objeto empacotador String. Como um objeto tem propriedades e métodos, é através dele que JavaScript faz o que está sendo pedido.
Voltando ao exemplo:
var OGordo = "OGordo.com";
var first_part = OGordo.split(".")[0];
Na primeira linha nós criamos a variável que é um string. Na segunda linha criamos outra variável, e ela recebe um objeto empacotador String – lembrado que esse objeto é transitório, ou seja, só vai servir para aquele momento e depois o objeto é descartado – com o método split().
Só para terminar:
Também podemos criar um objeto String. Eles são criados do mesmo jeito que os outros objetos, ou seja, com o operador new:
var OGordo = new String("OGordo.com");
var first_part = OGordo.split(".")[0];
// Ficou na dúvida se é ou não objeto? Tire-a com o typeof alert(typeof(OGordo));
Tudo o que o string pode fazer, o String também faz.
E legal saber que o objeto String também pode ser convertido para um tipo dado primitivo. Isso acontece sempre que usamos um objeto String que espera um tipo de dado primitivo. Exemplo:
var OGordo = new String("OGordo");
var resto = ".com";
OGordo += resto;
Só lembrado que tudo acima se aplica aos outros tipos primitivos de dados, mas não o usamos com a mesma freqüência que a string.
É isso aí pessoal. Dúvidas, sugestões, errata, etc. comentem.
Abraços.
P.S.: É incrível como gordos gostam de massas. ^^








Thiago, ficou muito bom tutorial, alguns reclamam da tipagem dinâmica, mas se quer q ela se comporte com determinado dado, é só convertá-la.
Excelente tutorial! Essa tipagem dinâmica ajuda muito
Boa Thiaguito
vocês está fazendo boas matérias.
Oh! Thanks!
São coisas que agente nem pensa muito, mais que são muito importantes de conhecer.
e massa o jeito de explicar, explicou bem e isso não acontece só em Javascript, mais em outras linguagens tbm.