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

怎么建立免费的网站广州各区风险区域最新动态

怎么建立免费的网站,广州各区风险区域最新动态,设计网站推荐html代码,零基础怎么做网站回顾一下原型,发现[[Prototype]]机制就是指对象中的一个内部链接引用另一个对象,这个机制的本质就是对象之间的关联关系 1、面相委托的设计 Task {setID: function(ID) { this.id ID; },outputID: function() { console.log( this.id ); } }; // 让 …

回顾一下原型,发现[[Prototype]]机制就是指对象中的一个内部链接引用另一个对象,这个机制的本质就是对象之间的关联关系

1、面相委托的设计

Task = {setID: function(ID) { this.id = ID; },outputID: function() { console.log( this.id ); }
};
// 让 XYZ 委托 Task
XYZ = Object.create( Task );
XYZ.prepareTask = function(ID,Label) {this.setID( ID );this.label = Label;
};
XYZ.outputTaskDetails = function() {this.outputID();console.log( this.label );
};
// ABC = Object.create( Task );
// ABC ... = ...

我们把这种编码风格称为“对象关联”,在JS中[[Prototype]]机制会把对象关联到其他对象,对象关联的代码会有一些不同之处:

  1. 在上面的代码中,id 和 label 数据成员都是直接存储在 XYZ 上(而不是 Task)。通常来说,在 [[Prototype]] 委托中最好把状态保存在委托者(XYZ、ABC)而不是委托目标(Task)上。

  2. 在类设计模式中,我们故意让父类(Task)和子类(XYZ)中都有 outputTask 方法,这
    样就可以利用重写(多态)的优势。在委托行为中则恰好相反:我们会尽量避免在[[Prototype]] 链的不同级别中使用相同的命名,否则就需要使用笨拙并且脆弱的语法来消除引用歧义(参见第 4 章)。
    这个设计模式要求尽量少使用容易被重写的通用方法名,提倡使用更有描述性的方法名,尤其是要写清相应对象行为的类型。这样做实际上可以创建出更容易理解和维护的代码,因为方法名(不仅在定义的位置,而是贯穿整个代码)更加清晰(自文档)。

  3. this.setID(ID);XYZ 中的方法首先会寻找 XYZ 自身是否有 setID(…),但是 XYZ 中并没有这个方法名,因此会通过 [[Prototype]] 委托关联到 Task 继续寻找,这时就可以找到setID(…) 方法。此外,由于调用位置触发了 this 的隐式绑定规则(参见第 2 章),因此虽然 setID(…) 方法在 Task 中,运行时 this 仍然会绑定到 XYZ,这正是我们想要的。在之后的代码中我们还会看到 this.outputID(),原理相同。

    换句话说,我们和 XYZ 进行交互时可以使用 Task 中的通用方法,因为 XYZ 委托了 Task。

委托行为意味着某些对象(XYZ)在找不到属性或者方法引用时会把这个请求委托给另一个对象(Task)。这是一种极其强大的设计模式,和父类、子类、继承、多态等概念完全不同

2、总结

在软件架构中你可以选择是否使用类和继承设计模式。大多数开发者理所当然地认为类是唯一(合适)的代码组织方式,但是本章中我们看到了另一种更少见但是更强大的设计模式:行为委托。

行为委托认为对象之间是兄弟关系,互相委托,而不是父类和子类的关系。JavaScript 的[[Prototype]] 机制本质上就是行为委托机制。也就是说,我们可以选择在 JavaScript 中努力实现类机制,也可以拥抱更自然的 [[Prototype]] 委托机制。

当你只用对象来设计代码时,不仅可以让语法更加简洁,而且可以让代码结构更加清晰。

对象关联(对象之前互相关联)是一种编码风格,它倡导的是直接创建和关联对象,不把它们抽象成类。对象关联可以用基于 [[Prototype]] 的行为委托非常自然地实现。

http://www.hengruixuexiao.com/news/8010.html

相关文章:

  • wordpress默认居中sem优化
  • 什么是网站交互潍坊seo网络推广
  • 做网站开发的过程网址查询服务中心
  • javaee做网站安全品牌传播策划方案
  • 上海联通 网站备案全网搜索指数查询
  • 网站设计公司合肥2022年小学生新闻摘抄十条
  • 网站怎样设计网址大全网络推广是什么工作内容
  • 南京模板建站seo关键词排名系统
  • 手游传奇网站999服宁波seo排名费用
  • wex5做视频网站百度搜索关键词排名优化推广
  • 如何用ps做网站效果图快速排名优化推广排名
  • 建立个人网站视频教程今日最新闻
  • java 做网站 模板在哪可以下seo网络推广优势
  • jquery个人网站开发广州的百度推广公司
  • 设计需要看的网站有哪些安卓优化大师app下载安装
  • 济南seo网站优化百度网站收录提交
  • matlab做网站爬虫北京seo招聘网
  • 装修效果图免费软件seo公司服务
  • 淄博网站建设哪家专业网站收录申请
  • app软件制作工具下载优化设计五年级上册语文答案
  • 网站反链数舆情监测系统
  • 咸阳 网站建设全网营销推广平台有哪些
  • angularjs做网站爱站关键词查询
  • 网站建设首选玖艺建站信得过seo是怎么优化的
  • 800元五合一建站湘潭网站seo
  • cpa项目怎么做必须有网站么百度竞价推广怎么做效果好
  • 蓝色经典网站seo外包服务项目
  • 佛山新网站建设怎么样资源搜索神器
  • 网站设计网站建设网站制作网络推广费用计入什么科目
  • 怎样在百度做网站表白网站推广优化怎样