0

他の関数に接続する関数を作成しています。

お気に入り:

string("Hi").capitilize()//returns hi

$$.string を 2 つの異なる方法で使用できるようにしたいと考えています。1は関数に付けています。2 つ目は関数のみです。

string("Hi")

Hi を返すだけです。しかし、私が得ているのは次のとおりです。[object Object]

関数にアタッチするための最初のコードを実行できるようにするメイン コードは次のとおりです。

var g = function (a) { 
        this._string = typeof a == "string" ? a : a.toString();
        return a;
}
var string = function (a) {
            return new g(a);
}

次に、すべての関数を含む別の変数を作成し、それをプロトタイプにバインドします。

string("Hi") があれば、これを単に文字列を返すようにして、関数を追加しても機能できるようにすることは可能ですか?

4

1 に答える 1

1

基本的な問題は、関数が戻り値がどこに向かっているのかがわからないことです。関数の呼び出しは、.演算子が評価されるまでに終了しているため、その時点ではコードで何も実行できません。

ここでできることはtoString()、プロトタイプに実装されたオブジェクトを返すことです。これにより、オブジェクトが文字列として扱われる状況で使用されたときに、適切に変換されます。

var g = function (a) { 
        this._string = typeof a == "string" ? a : a.toString();
        return a;
}
g.prototype.toString = function() {
  return this._string;
}
var string = function (a) {
            return new g(a);
}
alert( new string("Hi") );
于 2012-07-27T22:02:35.997 に答える