さまざまな JavaScript アプリケーションで、私が作成した isBlank() という小さな関数をよく使用します。
isBlank = function(text) {
while(text[0] == ' ') text = text.substr(1);
return (text === '');
}
この関数は、入力文字列の先頭からすべてのスペースを削除するだけで、結果が空白かどうかに応じて true または false を返します。そこで、次のようにこの関数を String プロトタイプにしようとしました。
String.prototype.isBlank = function() {
while(this[0] == ' ') this = this.substr(1);
return (this === '');
}
ただし、プロトタイプ バージョンでは、次のようなことを試みると「無効な左手の代入」エラーが発生します。
" ".isBlank();
ReferenceError: Invalid left-hand side in assignment
この問題は、while ループで「this」オブジェクトを再割り当てしているという事実に起因していると思いますが、まだ Java スクリプトを学習しているので、誰かがなぜこのプロトタイプが機能しないのかについて、より詳細な説明を提供できるかどうか疑問に思っていました。動作しません。私はこの質問の理論面にもっと興味があり、 isBlank() 関数を自分が望むことを行う文字列プロトタイプにする方法にはあまり興味がありません。
ありがとう!