0
私はカスタムオブジェクトを別のカスタムオブジェクトのイベントをリッスンさせようとしています。これどうやってするの?私は患者と看護師の小さな例を作りました。患者が悲鳴ときに看護師が電話をピックアップする必要があり、これは動作しますが、今、私のような警告の内側に看護師の名前を持つようにしたい911Javascriptカスタムオブジェクトは、別のカスタムオブジェクトイベントをリッスンする必要があります
function Patient(name) {
this.Name = name;
this.Scream = function (terribleSound) {
alert(terribleSound);
if (typeof this.OnScream === "function") {
setTimeout(this.OnScream(this), 1);
}
}
}
function Nurse(name, patient) {
this.Name = name;
this.Patient = patient;
this.Patient.OnScream = function (sender) {
alert(sender.Name + ' screamed');
}
}
var patient = new Patient('John');
var nurse = new Nurse('Jane', patient);
patient.Scream('AAAAAAAHHHHHHHHhhhhhh!');
を呼び出す:
alert(this.Name + ' heard ' + sender.Name + ' scream.');
しかしこのはセンダと同じで、「ジョンはジョンの叫び声を聞いた」と出力します。それはかなりうまいですが、ジェーンがジョンの叫び声を聞きたかったのです。このJavaScriptパズルをどのように解決できますか?
敬具、 レミーSamulski
Thxをします。両方の例を試したが、依然としてジョンだけが叫んで聞こえ、ジェーンはまだジョンの叫び声を聞いていない。タイムアウトを使用してthis.Scream関数が終了するまで待っていましたが、ジェーンのonScream反応の前に終了しました。タイムアウトを使用しない場合、実際のthis.Screamを終了する前に「イベント」が既にトリガーされています。 –
@ LiQuick.netの回答 – MysterX
ありがとう、両方のソリューションが動作します。この_bind()_関数が何をしているかを見ていきます。 THX! –