EDIT:最後にBergiの答えから分かりました。新しいメンバーの代わりにObject.create()を使用してプライベートメンバーでオブジェクトを作成する方法
ありがとうBergi。
編集:私の質問に対する答えは接線で外れているようです。私は実際には工場に興味がなく、実際には使用しないでください。私の質問は私的な状態に関するものです。 Bergiの答えとコメントから、私は何かを一緒に引くことができると思う。継続する
...
EDIT:Bergiは、以下の質問に答えるために始めたが、最も重要な部分取り残さいる - プライベート状態を。
私は考えをもっと考えていましたが、何らかの工場なしでObject.create()を使ってプライベート状態を達成することができません。しかし、私は間違っていると思うし、Bergiは解決策を暗唱しました... Bergiの答えを出発点として自由に感じてください。
オリジナル:javacriptでnew
を避けるための私の探求が私を独特な場所に導いてくれました。私は個人的なオブジェのメンバーがほしいですが、私はObject.create()
をあきらめたくありません。
ここにコードがあります。
var trackQueue = {};
trackQueue.factory = function() {
var that, queue;
that = this;
queue = [];
that.push = function (item) {
queue.push(item);
};
that.work = function() {
document.write(queue + "<br />");
};
return {
work : that.work,
push : that.push
};
};
var a = Object.create(trackQueue.factory());
a.push("a");
a.push("b");
a.push("c");
var b = Object.create(trackQueue.factory());
b.push("d");
b.push("e");
b.push("f");
a.work();
b.work();
そしてjsfiddle
http://jsfiddle.net/dsjbirch/Wj6cp/10/
うinit
factory
方法のためのより多くの慣用/適切な名前にしますか?
これは気違いですか?
Be kind - 私の最初の言語ではありません。
なぜ「new」を使いたくないのですか? –
ダグラス・クロフォード。 – bluekeys
それは残念です。 –