Skip to content

Latest commit

 

History

History
36 lines (29 loc) · 1.18 KB

代理模式.md

File metadata and controls

36 lines (29 loc) · 1.18 KB

JavaScript设计模式之代理模式

概念

代理模式:由于一个对象不能直接引用另一个对象,所以需要代理对象在这两个对象之间起到中介的作用

代码演示

// 先声明美女对象
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中的跨域总结去体会哈