Хорошо, это, вероятно, принесет мне значок Headslam of the Day.
Почему this
указывает на window
в следующем коде?
if (!String.prototype.Trim)
{
String.prototype.Trim = function()
{
var result = this.replace(/^\s+|\s+$/g, "");
return result;
};
}
Насколько я понимаю, this
должно соответствовать значению текущего экземпляра строки.Вместо этого он оценивает текущий объект окна.Таким образом, следующее с треском проваливается:
var baz = 'foo bar '.Trim();
Обратите внимание, что этот код использовался в течение достаточно долгого времени и основан на коде, который я вижу, рекламируемый повсюду на intartoobs.Таким образом, этот шаблон кажется рекомендуемым способом сделать это.Я не могу понять, почему this
не указывает на данные, на которые, я думаю, они должны указывать.(В Visual Studio при наведении на него курсора или просмотре в окне «Наблюдения» он отображается как [object window]
).
(IE 8 [32-bit]; Win7; обычная HTML-страница.)