Strings são objetos ou são tipos primitivos?(JavaScript)

July 8, 2008 at 9:41 pm | In JavaScript | 1 Comment

Temos as duas seguinte linhas:

var s = “Welcome do the Jungle”
var ultima_palavra = s.substring(s.lastIndexOf(“ “)+1, s.length);
typeof(s); ==> string

primeira linha simplesmente atribuimos uma frase a váriavel s, e na segunda atribuimos a ultima palavra da frase à variavel ultima_palavra, e por ultimo usando o typeof para verificar o que o js diz que s é, e ele nos diz que s é string, mas usamos notação de objeto para “pegar” a ultima palavra da frase.
Para operar string usamos a notação de objetos, mas como foi dito acima segundo o typeof s é um tipo string:

typeof(s); ==> string

Podiamos fazer s um objeto mesmo e iria funcionar da mesma forma, veja:

var s = new String(“Welcome to the Jungle”);
typeof(s); ==> object

Porque se usa notacão de objeto para tratar de string então?
O JavaScript contém três classes uma para cada tipo de dados, number, string e boolean, essas classes por sua vez contém métodos e propriedade para manipular esses valores, então quando tentamos manipular uma string em contexto de objeto o JS cria por trás dos “panos” um objeto que irá ser usado no lugar no valor primitivo, e como esse objeto tem métodos e propriedades definidas podemos usar em contexto de objeto com sucesso, veja:

var a = “Welcome to the Jungle”;
typeof(a); ==> String
var comprimento = x.lenght; ==> 21
typeof(a); ==> String

Após o uso o js “joga fora” esse objeto pois ele foi não necessita mais dele.
E se for feito algo do tipo:

var i = new String(“Welcome to the Jungle”);

O que acontece aqui, usamos um objeto string com o operador +, o js então criou um valor primitivo de string para que possa ser feita a concatenção usando o “ + ”.
O mesmo esquema vale para tipos number e boolean.
OBS: Referência: JavaScript – O guia definitivo 4ª Edição.

Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.