I have created two functions aa and bb. now I hope, when I call aa, the bb will be also invoked. How to do that? I mean, don't write the bb invoked code in aa. I hope just like "dojo.connect(a,"aa",b,"bb');", I don't know how does the dojo realize it.
function connect(function1, function2)
{
eval(function1)();
eval(function2)();
}
function aa()
{
alert('I am aa function');
}
function bb()
{
alert('I am bb function');
}
//TEST IT ALL
connect('aa','bb');
Thanks for your response. I'm sorry. recently, I am learning the dojotoolkit. maybe, I didn't describe the question clearly.
This is the test code I used in my page with dojotoolkit:
<script src="dojo.js"></script>
<script>
function ab(){
this.a = function(){alert("b");}
}
function ac(){
this.a = function(){alert("c");}
}
var b = new ab();
var c = new ac();
dojo.connect(b,"a",c,"a"); // here use c.a to listen b.a
b.a(); //b.a is called, and c.a is also invoked
</script>
As above, I call b.a, but c.a is also invoked, I don't know how does it work?
in the ab.a, I don't write any code to invoke the ac.a, but it do, why?
I mean how does the dojo connect these two functions.
I guess the dojotoolkit modify my b.a function, and add some codes to call the c.a, but I can't find out it.
I have read the source codes of dojo, but didn't find any clue.
Is there anyone familiar with dojotoolkit?
give me some clues, please!
thank you!
While I'm not sure what the dojo implementation looks like, here's a quick one I hacked together (this type of thing is part of something called Aspect Oriented Programming, hence the name of the object).
So, when you call Aspect.after(...) it creates a copy of the original function and then replaces it with a function which first calls the copy and then calls the "listening" function, both with the same arguments, and both in the context of their object.
Not one shred of evidence supports the notion that life is serious. eternal.co.za - code, thoughts, rants and raves f1rivals.net - formula 1 forums, and, hopefully, soon, prediction game
Bookmarks