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

做cpa的网站源码安卓应用开发软件

做cpa的网站源码,安卓应用开发软件,dede网站seo,公司网站做的很烂在 JavaScript 中#xff0c;最常见的新建一个对象的方式就是使用花括号的方式。然后使用’ . 的方式往里面添加属性和方法。可见以下代码#xff1a; let animal {}; animal.name Leo; animal.energe 10;animal.eat function (amount) {console.log(${this.name} is ea…在 JavaScript 中最常见的新建一个对象的方式就是使用花括号的方式。然后使用’ . 的方式往里面添加属性和方法。可见以下代码 let animal {}; animal.name Leo; animal.energe 10;animal.eat function (amount) {console.log(${this.name} is eating.)this.energe amount }animal.sleep function (length) {console.log(${this.name} is sleeping.)this.energe length }animal.play function (length) {console.log(${this.name} is playing.)this.energe - length }但通常的应用场景下你会需要生成多种动物。这则需要把以上的逻辑抽象成一个函数。可见以下代码生成了 leo 和 snoop 两个动物。 function Animal(name, energy){let animal {};animal.name name;animal.energy energy;animal.eat function (amount) {console.log(${this.name} is eating.)this.energy amount}animal.sleep function (length) {console.log(${this.name} is sleeping.)this.energy length}animal.play function (length) {console.log(${this.name} is playing.)this.energy - length}return animal; }const leo Animal(Leo, 7); const snoop Animal(Snoop, 10)但是按照上面代码每次新创建一个animal就需要把里面的eat、sleep、play方法都会被重新创建一遍。 因为eat、sleep、play方法都很相似所以我们可以把他们放在一个animalMethods里面这样只需要在内存里面创建一次。然后每次我们需要创建一个新动物我们只是指向了animalMethods里面的方法而不是重新创造这些方法。 const animalMethods {eat(amount) {console.log(${this.name} is eating.)this.energy amount},sleep(length) {console.log(${this.name} is sleeping.)this.energy length},play(length) {console.log(${this.name} is playing.)this.energy - length} } function Animal(name, energy){let animal {};animal.name name;animal.energy energy;animal.eat animalMethods.eat;animal.sleep animalMethods.sleep;animal.play animalMethods.play;return animal; }以上代码中比如animal增加一个方法poop就需要到Animal函数 里面增加 animal.poop animalMethods.poop 。 如果想要Animal总能指向 animalMethods里面的任何一个方法可以使用Object.create()传入animalMethods使得在Animal里面找不到对应属性或方法时就会去animalMethods查找并调用对应方法。 const animalMethods {eat(amount) {console.log(${this.name} is eating.)this.energy amount},sleep(length) {console.log(${this.name} is sleeping.)this.energy length},play(length) {console.log(${this.name} is playing.)this.energy - length} } function Animal(name, energy) {let animal Object.create(animalMethods)animal.name name;animal.energy energy;return animal; } const leo Animal(Leo, 7); console.log(leo.play(7)) //Leo is playing.以上的用法就是JavaScript 原型prototype的由来。 那么什么原型它就是函数上的一个属性指向一个对象。 既然原型是每个函数都有的属性那么与其单独管理 animalMethods 为什么我们不把 animalMethods 放到函数的原型上呢 function Animal(name, energy) {let animal Object.create(Animal.prototype)animal.name name;animal.energy energy;return animal; }Animal.prototype.eat function (amount) {console.log(${this.name} is eating.)this.energy amount } Animal.prototype.sleep function (length) {console.log(${this.name} is sleeping.)this.energy length } Animal.prototype.play function (length) {console.log(${this.name} is playing.)this.energy - length }const leo Animal(Leo, 7); console.log(leo.eat(5)) //Leo is eating.以上代码告诉了我们三点 如何创建一个构造函数构造函数就是构造一个对象 如何将方法添加到构造函数的原型上egAnimal.prototype.eat(){…} 如何使用Object.create()指向函数原型。 这三点的目的就是为了构造函数的所有实例都能共享实例上的方法。 接下来会引入关键词 new 来对上面代码再进行进一步优化。使用new关键词js会自动做Object.create()和return的动作并且需要使用this对象来替换原本的animal对象。 function Animal(name, energy) {// let this Object.create(Animal.prototype) //这一步的作用1、创建对象 2、指向Animal.prototypethis.name name;this.energy energy;// return this; //输出创建的对象 }Animal.prototype.eat function (amount) {console.log(${this.name} is eating.)this.energy amount } Animal.prototype.sleep function (length) {console.log(${this.name} is sleeping.)this.energy length } Animal.prototype.play function (length) {console.log(${this.name} is playing.)this.energy - length }const leo new Animal(Leo, 7); const snoop new Animal(Snoop, 10) console.log(leo.sleep(15)) //Leo is sleeping.以上这些操作就是基本上创建了一个class。在es6JavaScript有了class关键词。接下来就用class来重构以上的代码。 class Animal {constructor(name, energy) {this.name namethis.energy energy}eat(amount) {console.log(${this.name} is eating.)this.energy amount}sleep(length) {console.log(${this.name} is sleeping.)this.energy length}play(length) {console.log(${this.name} is playing.)this.energy - length} }const leo new Animal(Leo, 7); const snoop new Animal(Snoop, 10) console.log(leo) //Animal { name: Leo, energy: 7 } console.log(leo.sleep(1)) //Leo is sleeping.既然可以用js建造class那么为什么还需要花这么多时间了解上面的prototypethisnew原因是class是function的语法糖提供了更便捷的方式创建对象。class最终会被编译为function其中的方法会成为prototype上面的共享方法。
http://wiki.neutronadmin.com/news/272636/

相关文章:

  • 网站运行费用预算公司网站出现空白页
  • 做私房蛋糕在哪些网站写东西建立大数据平台
  • 重庆做公司网站高端酒店网站模板
  • 广州 网站制高唐网站开发
  • 实战网站开发北京出名的室内设计公司
  • 手机端网站seo做手表网站用什么源码比较好
  • 电子网站设计wordpress 微信支付插件
  • 智能行业网站模板门户网站开发技术服务合同
  • 汉口江岸区城市建设局网站wordpress和di
  • MIUI官方网站开发版如何让网站免费
  • 个人网站建设开题报告暴雪游戏
  • 荣耀商城官网网站wordpress转换小程序
  • 网站建设古典风格河南省示范校建设专题网站
  • 知名网站建设哪家好电商平台证明怎么开
  • 网站内容建设要求age06爱查企业在线查询
  • 保定网站制作软件怎样查一个网站的空间商
  • 淮南品牌网站建设电话微小店网站建设平台
  • 程序员知识网站需要多少钱工人找工作哪个网站好
  • 织梦网站主页底怎样不让网站被收录
  • 厦门网站建设方案报价网站建设需要关注什么
  • 昌做网站厦门网站建设方案优化
  • 通辽做网站建设尚义网站建设
  • 品牌网站制作流程字体多的网站
  • 成都哪家做网站企业网站建设实训体会
  • 部门网站建设目的视频点播网站开发教程
  • 彩票网站是静态动态西安俄语网站建设
  • 苏州网站设计哪家公司好wordpress图片标签
  • 邢台网站建设信息西安建网站价格低
  • 帝国 网站搬家企业网站建设知识
  • 工业园区网站建设方案网站开发经理岗位职责