初心者の質問はここにあります...私は機能的なパターンを使用して単純なスタックを構築しており、プッシュとポップアップの機能をキーとして返しています(私はこのことを望まない)...私は本当にありませんどうしてそうだ。関数はちょうどそれらの2つの余分なキーを返す、動作している...キーとして返される関数
これはリターンがどのように見えるかですが...
{ size: 2,
storage: { '1': 'test0', '2': 'test1' },
push: [Function], <== don't want
pop: [Function] } <== don't want
[Finished in 0.1s]
function Stack() {
var obj = {};
obj.size = 0;
obj.storage = {};
obj.push = function(data) {
var newSize = ++obj.size;
obj.storage[newSize] = data;
};
obj.pop = function() {
var newSize = obj.size;
var deletedData;
if (newSize) {
deletedData = obj.storage[newSize];
delete obj.storage[newSize];
obj.size--;
return deletedData;
}
};
return obj;
};
var stack = new Stack();
stack.push('test0')
stack.push('test1')
stack.push('test2')
stack.pop()
console.log(stack)
私はxPushとxPopを固定しました...私はコードを使って遊んでいましたが、間違ったリターンでコピーしました...多分あなたの権利、多分それは明らかではないでしょう。私は私の質問は、なぜ彼らのそれぞれの関数のプロパティでプッシュとポップキーを返すと思いますか?私はこれを記録し、さらに彼らが実際にどのように作成されているのかを見ていると思います...私は実際にそれらを返す理由についてちょっと混乱しています。 –
どのように作成されますか?さて、あなたは 'obj.push = function(data){...}'と言うので、関数参照を作成し、それを 'obj'のキー' push'に割り当てます。あなたが返すオブジェクト( 'obj')には、これらのキーが割り当てられているため、これらのキーがあります。おそらくそれらのメソッドを 'Stack'に置くことを意味しましたか? –
ああ...ありがとう! –