读书人

js封装类似java、c#中的事件委托。写

发布时间: 2012-04-08 14:38:30 作者: rapoo

js封装,类似java、c#中的事件委托。写出来测试不正确,急求大师们来指导一下。
js封装,类似java、c#中的事件委托。写出来测试不正确,急求大师们来指导一下。
废话少说,直接贴代码:

JScript code
person.js文件中的代码var person = function (name) {    var name = name;    this.onRun;    this.run = function () {        onRun(name);    }}
HTML code
<html>    <head>    <script type="text/javascript" src="jquery-1.7.2.min.js"></script>    <script type="text/javascript" src="person.js"></script>    <script type="text/javascript">        function run(name) {            alert(name + "在奔跑");        }        var person;        $(documen).ready(function () {            person = new person("刘德华");            person.onRun = run;  //这里绑定事件方法,应该这么说            person.run();   //这里会触发事件        });    </script>    </head>    <body>    <div>test page</div>    </body></html>
我是想在person的run方法里执行的操作由调用person的人传递进来,而不是直接在person里面写。按照我的需求,上面的代码应该alert出来"刘德华在跑步"。但是很遗憾,没有弹出来。用chrome看,里面的确有错误。

[解决办法]
var person = function (name) {
this.name = name;
this.onRun = function(){};
this.run = function(){this.onRun(name)}
}

function run(name) {
alert(name + "在奔跑");
}

var person = new person("刘德华");
person.onRun = run;
person.run(person.name);
[解决办法]
BTW:貌似java、c#中也不是那样干的吧^O^
[解决办法]
有错,更正:
JScript code
var person = function (name) {    this.name = name;    this.onRun = function(){};    this.run = function(){this.onRun(this.name)}}function run(name) {    alert(name + "在奔跑");}var person = new person("刘德华");person.onRun = run;person.run();
[解决办法]
把方法传递进去就行:
JScript code
var person = function (name) {    this.name = name;    this.run = function(method){method.apply(this)}}var person = new person("刘德华");person.run(function(name) {    alert(this.name + "在奔跑");});
[解决办法]
这不更简单吗?
JScript code
var person = function (name) {    this.name = name;    this.onRun = function() {};    this.run = function(){ this.onRun() }}function run(name) {    alert(this.name + "在奔跑");}var person = new person("刘德华");person.onRun = run;person.run();
[解决办法]
this.run = function () {
//onRun(name); 错误在这 没加 this
this.onRun(name);
}

另外下面document也拼错了
[解决办法]
JScript code
var person = function (name) {    this.name = name;    this.onRun = function() {};    this.run = function(){ this.onRun() }}function runX(name) {    alert(this.name + "在奔跑");}function runY(name) {    alert(this.name + "在睡觉");}var personQ = new person("刘德华");personQ.onRun = runX;personQ.run(); personQ.onRun = runY;personQ.run(); var personR = new person("周星驰");personR.onRun = runX;personR.run(); personR.onRun = runY;personR.run(); 

读书人网 >JavaScript

热点推荐