读书人

JS模拟嘱托

发布时间: 2012-11-23 22:54:33 作者: rapoo

JS模拟委托
模拟C#中的委托,写了一个委托的类,原理:
创建一个委托列表管理Add进来的方法

<html xmlns="http://www.w3.org/1999/xhtml"><head>    <title></title>    <script type="text/javascript">        var delegate1 = function() {            //委托的方法列表            var ArrayFuction = [];            //添加方法,相当于+=            this.AddF = function(f) {                if (typeof (f) === "function") {                    ArrayFuction.push(f);                }                else {                    throw new Error("委托只能接受方法");                }            };            //移除方法,相当于-=            this.RemoveF = function(f) {                if (typeof (f) === "function") {                    var length = ArrayFuction.length;                    for (var i = 0; i < length; i++) {                        if (ArrayFuction[i] == f) {                            ArrayFuction = ArrayFuction.splice(i, 1);                        }                    }                }                else {                    throw new Error("委托只能接受方法");                }            };            //调用委托下所有方法            this.Run = function() {                for (var item in ArrayFuction) {                    ArrayFuction[item]();                }            }        }        var del = new delegate1();        function aa() {            alert("添加进入了");        }        function bb() {            alert("添加2");        }        del.AddF(aa);        del.AddF(bb);        del.RemoveF(1);        del.Run();                            </script></head><body></body></html>

读书人网 >JavaScript

热点推荐