JAvascriptでのオブザーバーモード
2258 ワード
<script type="text/javascript">
/*
-
,
.
*/
//
var Paper = function() {
this.customers = []; //
}
Paper.prototype.sendPaper = function(data) {
for(var i=0,len=this.customers.length;i<len;i++) {
this.customers[i].receive(data);
}
}
//
var Customer = function(param) {
this.name = param.name;
}
//
Customer.prototype.subscibe = function(paper) {
var customers = paper.customers;
var isExist = false;
for(var i=0,len=customers.length;i<len;i++) {
if(customers[i] == this) {
isExist = true;
break;
}
}
if(!isExist) {
customers.push(this);
}
return this;
}
//
Customer.prototype.receive = function(data) {
console.log(this.name + ' ' + data.paperName);
}
//
//
var BeijingPaper = new Paper();
var TianjinPaper = new Paper();
var ShanghaiPaper = new Paper();
//
var Jim = new Customer({name:"Jim"});
var Bily = new Customer({name:"Bily"});
//
Jim.subscibe(BeijingPaper).subscibe(TianjinPaper); //
Bily.subscibe(ShanghaiPaper).subscibe(TianjinPaper); //
//
BeijingPaper.sendPaper({paperName:' '});
TianjinPaper.sendPaper({paperName:' '});
ShanghaiPaper.sendPaper({paperName:' '});
/*
:
Jim
Jim
Bily
Bily
*/
</script>
, .
jquery :
$('#foo').bind('click', function() {
alert($(this).attr('id'));
});
ここではclickイベントをバインドし、clickのトリガを つ. は、サブスクライバの であるコールバック と なすことができます.
-------
:『javascript モード』