Javascript имеет строковые примитивы (которые не являются истинными объектами javascript) и строковые объекты, которые имеют методы. Я предполагаю, что строковые примитивы более эффективны, и статически объявленная строка, как у вас, по умолчанию будет примитивом. В большинстве случаев Javascript автоматически преобразует примитив в объект при необходимости. Когда я запускаю ваш код в Chrome, он делает это, и я получаю предупреждение.
Если вы хотите убедиться, что это объект, вы можете объявить его следующим образом:
String.prototype.foobar = function() {alert("fun");};
var s = new String("I'm just a stupid string!");
s.foobar();
Подробнее об этом см. В разделе «Различие между строковыми примитивами и строковыми объектами» здесь .
Если вы пытаетесь получить имя переменной из метода foobar (), то это не то, что Javascript поддерживает любым стандартным способом.
Если ни один из них не является тем, о чем вы на самом деле спрашиваете, уточните свой вопрос.