javascript - String.prototype «this» не возвращает строку?



4 Answers

Чтобы убедиться, что вы всегда получаете строку, пытаясь использовать этот код:

String.prototype.doNothing = function() {
    return this.toString();
};

alert(typeof 'foo'.doNothing())
alert(typeof 'foo')

В исходном коде this возвращается как строковый объект, а не фактическая строка.

javascript

Что здесь происходит? Просто, когда я думал, что знаю JS внутри и снаружи, этот камень появляется.

String.prototype.doNothing = function() {
  return this;
};

alert(typeof 'foo'.doNothing()) // object
alert(typeof 'foo')             // string

http://jsfiddle.net/dJBmf/

Это нарушает некоторые вещи, которые ожидают строку, такую ​​как метод .text(str) jQuery.







Попробуйте return String(this); вместо того чтобы return this;




попробуйте следующее:

return this + '';



Related


Tags

javascript