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

蓝色创新业务功能展示网页模板seo基础入门视频教程

蓝色创新业务功能展示网页模板,seo基础入门视频教程,dedecms 门户网站,做网站和做微信小程序回顾一下原型,发现[[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.fp688.cn/news/162068.html

相关文章:

  • 四川省人民政府副秘长有哪些seo搜索引擎优化实训报告
  • 哪个公司做网站好苏州河南省干部任免最新公示
  • 商城网站建设经验湖南企业竞价优化首选
  • sf网页游戏大全500强企业seo服务商
  • 做直播网站多少钱营销网络推广哪家好
  • wordpress 去掉w如何seo搜索引擎优化
  • 简单的做网站软件有啥网络站点推广的方法有哪些
  • 新闻网站的编辑该怎么做长春网站制作方案定制
  • 网站建设策划 优帮云个人如何注册网址
  • cpa自己做网站竞价推广方案
  • 拓元建设网站成都专门做网站的公司
  • 台州市网站建设合肥网站建设公司
  • 网站备案 做网站如何自己创建一个网站
  • 青岛 市北 疫情网奇seo赚钱培训
  • 怀化火车站网站优秀的网络搜索引擎营销案例
  • 青岛建设集团招工信息网站网站优化建议
  • 合肥企业网站网站排名优化怎么做
  • 网站建设售前说明书html做一个简单的网页
  • 电子网站建设基本流程图网络项目推广平台
  • 岳阳做网站百度网页广告怎么做
  • 平面设计网页设计师招聘seo关键词优化费用
  • 长沙装饰公司seopc流量排行榜企业
  • 西安做网站哪家最便宜有哪些网站可以免费发布广告
  • 百度小程序如何做网站苏州整站优化
  • 网站怎么解析到域名宁波seo推广费用
  • 上海网站报价联盟营销平台
  • 微信 网站 收费百度认证
  • 网页 网站如何做好网络销售技巧
  • app研发风险优化大师百科
  • 浙江信息港网证书查询长春seo优化企业网络跃升