代理模式:由于一个对象不能直接引用另一个对象,所以需要代理对象在这两个对象之间起到中介的作用
// 先声明美女对象
var girl = function (name) {
this.name = name;
};
// 这是dudu
var dudu = function (girl) {
this.girl = girl;
this.sendGift = function (gift) {
alert("Hi " + girl.name + ", dudu送你一个礼物:" + gift);
}
};
// 大叔是代理
var proxyTom = function (girl) {
this.girl = girl;
this.sendGift = function (gift) {
(new dudu(girl)).sendGift(gift); // 替dudu送花咯
}
};
var proxy = new proxyTom(new girl("酸奶小妹"));
proxy.sendGift("999朵玫瑰");
假如dudu要送酸奶小妹玫瑰花,却不知道她的联系方式或者不好意思,想委托大叔去送这些玫瑰,那大叔就是个代理
其实在日常开发中,我们遇到很多这种情况,比如跨域,之前总结过跨域的所有东西,其中的jsonp,window.name还是location.hash都是通过代理模式来实现的。
代理模式具体的从我的另一篇文章,JavaScript中的跨域总结去体会哈