時間遅延 (たとえば、ブラウザ環境などsetTimeout
) とフラグがあれば可能です。望ましくありませんが、可能です。
それがなければ、コンストラクターのアクションをまだ起こっていないことに基づいて行うことはできません。代わりに、コンストラクターに何かを渡して、何が起こっているかを知らせる必要があります。
ブラウザの例 (繰り返しますが、これはお勧めしません):
function OutputNumber(number) {
var handle = 0;
this.outputThisInstead = function (otherNumber) {
if (handle) {
clearTimeout(handle);
handle = 0;
}
console.log(otherNumber);
}
handle = setTimeout(function() {
console.log(number);
}, 0);
}
質問に対するあなたのコメントから:
これで、私が実験している一連のオブジェクト/関数の連鎖が終わりました。例えば:
Assert.that(1).is.not(2).because('output this message if fails');
ここで、not(2) は、オプションで呼び出せるのでオブジェクトを返します。呼び出されるため、オブジェクトの動作は依存します。
チェーンの前の関数の動作をチェーンの後の関数に依存させるのではなく、おそらく.end()
何かの最後に を追加します。
Assert.that(1).is.not(2).because('output this message if fails').end();
end
以前の関数によって保存されたメッセージを出力します。黒魔術はいらない。.end()
明らかに、これは、人々がonを置くのに失敗する可能性があるという事実に苦しんでいますが、オプションの後続の関数呼び出しに基づいて出力を変更したい場合は、出力を実行しても問題ない何らかのトリガーが必要です。