Usando .apply com Strings em JavaScript

Encontrou um problema interessante ao tentar passar uma variável String primitiva como o contexto durante uma .applychamada. A primitiva String foi autoboxed para um objeto String.

Aqui está um exemplo disso:

function boxing() { return this; }

var test = 'test';

boxing.apply(test) === 'test'; // will return false

Quando a testvariável é passada como contexto usando a função apply, ela é encaixotada no objeto String real, não no primitivo.

A maneira de fazer com que esse autoboxing não ocorra é colocar:

use strict;

declaração na parte superior do seu arquivo. Isso impedirá que o vm faça o autoboxing do contexto na .applyfunção.