1

私はURLを支援する関数を構築しています:

var ap = { /* lots of things removed */ }

ap.url = function(base) {
    this.base  = base
    this.data  = "cb_=" + parseInt(Math.random()*99999999);
}

ap.url.prototype = {
    nv: function (n,v) {this.data=this.data+"&"+ n+"="+encodeURIComponent(v)},
    get: function () { return this.base + "?" + this.data; }
};


var u = new ap.url("site.com");
u.nv("p1", "123");
u.nv("p2", "456");

alert( u.get() )

そして、これは問題なく機能しているようです。

オブジェクト自体のプロトタイプを作成することは可能ですか?好き:

alert( u() )

u()にu.get()と同じことをしてもらいたい

4

1 に答える 1

2

いいえ、「u」は Function インスタンスではないためです。ただし、「ap.url」プロトタイプに「toString()」および/または「valueOf()」関数を指定して、文字列および数値表現を提供できます。これらは、さまざまな状況で暗黙的に使用されます。次に、(たとえば) 文字列連結式でこれらのオブジェクトの 1 つへの参照を使用すると、ランタイムは暗黙的に "toString" 関数を呼び出します。

function C(v) {
  this.internal = v;
}

C.prototype = {
  toString: function() { return this.internal; }
};

var c = new C("hello world");

alert("The value is: " + c);
于 2013-01-27T15:52:51.307 に答える