0

Was speaking with a developer today and he said it was possible to operate on a string literal like this using prototype. Can anyone explain how that might be possible?

var myVar = "some string literal".reverse(); 
alert(myVar); 

and i'd need to implement some reverse method to receive the alerted output ("literal string some");

(not looking for the algorithm, just how i can operate on a string literal like this)

4

2 に答える 2

4

文字を逆にした新しい文字列を返す独自の新しいメソッドを作成できます。

String.prototype.reverse = function() {
    return this.split("").reverse().join("");
}

作業例: http://jsfiddle.net/jfriend00/jXA2x/

参考までに、組み込み型をこのように拡張することは、状況によって、特に他のコードと相互運用しようとするときに問題を引き起こす可能性があるため、一般的には良い考えではありません。

単語の境界またはその他の基準で分割および反転する場合は.split()、使用するロジックに応じて渡された引数を調整し、それ.join()に応じて変更して一致させることができます。

String.prototype.reverse = function() {
    return this.split(/\b/).reverse().join(" ");
}
于 2013-04-24T04:56:52.170 に答える
1

古いブラウザー ( など) の機能を変更しない限り、基本型のプロトタイプをオーバーライドすることはお勧めできませんArray.prototype.indexOf

単純に逆関数を作成するのは理にかなっています。

function reverse(str) {
    return str.split(' ').reverse().join(' ');
}

次のように呼び出すことができます。

reverse('some string literal');

そして生産するだろう

'literal some string'

しかし、任意の文字列からドット表記を介してアクセスできるようにする必要がある場合は、関数を on に設定できますString.prototype

String.prototype.reverse = function () {
    return this.split(' ').reverse().join(' ');
};

この特定のreverseメソッドは、誤解を招くように に似ていArray.prototype.reverseます。このような機能を追加すると、他の開発者に簡単に誤解され、バグの多いコードにつながる可能性があります。

于 2013-04-24T05:04:15.123 に答える