当前位置: 首页 > wzjs >正文

巢湖网站建设公司各种资源都有的搜索引擎

巢湖网站建设公司,各种资源都有的搜索引擎,手机免费网站空间,官网首页设计介绍 使用者无权访问目标对象中间加代理,通过代理做授权和控制 UML类图 传统UML类图 简化UML 代码演示 class ReadImg {constructor(fileName) {this.fileName fileNamethis.loadFromDisk() // 初始化即从硬盘中加载,模拟}display() {console.l…

介绍

  • 使用者无权访问目标对象
  • 中间加代理,通过代理做授权和控制

UML类图

  • 传统UML类图
    传统UML类图

  • 简化UML
    简化UML

代码演示

class ReadImg {constructor(fileName) {this.fileName = fileNamethis.loadFromDisk() // 初始化即从硬盘中加载,模拟}display() {console.log('display...' + this.fileName)}loadFromDisk() {console.log('loading...' + this.fileName)}
}class ProxyImg {constructor(fileName) {this.realImg = new ReadImg(fileName)}display() {this.readImg.display()}
}// test 
let proxyImg = new ProxyImg('1.png')
proxyImg.display()

场景

网页事件代理

<div id="div1"><a href="#">a1</a><a href="#">a2</a><a href="#">a3</a><a href="#">a4</a>
</div>
<button>点击增加一个a标签</button><script>
var div1 = document.getElementById('div1')
div1.addEventListener('click', function(e) {var target = e.targetif (e.nodeName === 'A') {alert(target.innerHTML)}
})
</script>

jQuery.$.proxy代理

$('#div1').click(function() {// this 符合期望$(this).addClass('red')
})
$('#div1').click(function() {setTimeout(function() {// this 不符合期望$(this).addClass('red')}, 1000);
});// 可以用如下方式解决
$('#div').click(function() {var _this = thissetTimeout(function() {// _this符合期望$(_this).addClass('red')}, 1000);
});// 但推荐使用$.proxy解决,这样就少定义一个变量
$('#div1').click(function() {setTimeout($.proxy(function() {// this 符合期望$(this).addClass('red')}, this), 1000);                                                         
})// 上面函数的另一种写法
$('#div1').click(function() {var fn = function() {$(this).css('background-color', 'yellow')}fn = $.proxy(fn, this)setTimeout(fn, 1000)
})
  • ES6 Proxy
// 明星
let star = {name: '张xx',age: 25,phone: '16285838800'
}// 经纪人
let agent = new Proxy(star, {get: function (target, key) {if (key === 'phone') {// 返回经纪人自己的手机号return '18611112222'}if (key === 'price') {// 明星不报价,经纪人报价return 120000}return target[key]},set: function (target, key, val) {if (key === 'customPrice') {if (val < 100000) {// 最低 10wthrow new Error('价格太低')} else {target[key] = valreturn true}}}
})// test 
console.log(agent.name)
console.log(agent.age)
console.log(agent.phone)
console.log(agent.price)agent.customPrice = 150000

设计原则验证

  • 代理类和目标类分离,隔离开目标类和使用者
  • 符合开放封闭原则

代理模式vs适配器模式

  • 适配器模式:提供一个不同的接口
  • 代理模式:提供一模一样的接口

代理模式VS装饰器模式

  • 装饰器模式:扩展功能,原有功能不变且可直接使用
  • 代理模式:显示原有功能,但是经过限制或者阉割之后的
http://www.dtcms.com/wzjs/127612.html

相关文章:

  • 织梦网站404怎么做百度竞价推广是什么工作
  • 做网站需要开放哪些端口网络营销战略的内容
  • 华侨城网站建设seo经验是什么
  • 苏州个人网站建设网络营销创意案例
  • wordpress google主题福州整站优化
  • 一站式网站建设架构推广文案怎么写吸引人
  • 哈尔滨网站建设制作哪家好seo竞价排名
  • wordpress文章加载特效佛山seo网站排名
  • 河南定制网站建设报价最新的域名网站
  • 石家庄学做网站建设培训360营销平台
  • qq空间实名认证网站seo课程哪个好
  • 赤峰市建设局网站长沙百度网站优化
  • 淘宝客推广网站模板百度竞价代运营托管
  • 电子商务网站建设的需求游戏推广赚佣金的平台
  • 搭网站可以用自己电脑做服务器吗长沙百度关键词排名
  • wp博客网站怎么做营销百度app下载手机版
  • 四川网站建设培训app推广软文范文
  • 南京做网站建设河南网站排名
  • 杭州网站建设费用可视化网页制作工具
  • 电子商务网站建设试题答案爱站网挖掘关键词
  • 微信小程序源代码大全seo关键词排名公司
  • 申请网站建设的请示cms建站系统
  • 易语言和网站做交互网络seo招聘
  • 做网站的语深圳seo关键词优化外包公司
  • 深圳做网站 百度智能小程序知乎营销平台
  • 重庆那里做网站外包好网站流量查询
  • 小程序推广运营公司北京网站seo哪家公司好
  • 如何建立政府网站为什么sem的工资都不高
  • 网站建设公司昆明怎样推广品牌
  • 怎么组建企业网站品牌推广活动策划方案