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

台州永建建设有限公司网站深圳台历制作

台州永建建设有限公司网站,深圳台历制作,互动广告,做php网站教程视频教程目录 class构造函数方法原型方法访问器方法静态方法 继承super minxin关于多态 class 在ES6中之前如果我们想实现类只能通过原型链和构造函数的形式#xff0c;不仅难以理解步骤也十分繁琐 在ES6中推出了class关键字#xff0c;它可以在js中定一个类#xff0c;通过new来实… 目录 class构造函数方法原型方法访问器方法静态方法 继承super minxin关于多态 class 在ES6中之前如果我们想实现类只能通过原型链和构造函数的形式不仅难以理解步骤也十分繁琐 在ES6中推出了class关键字它可以在js中定一个类通过new来实例化这个类的对象 需要注意的是class关键字只是一个语法糖它的本质还是通过原型链和构造函数来实现的 class中的代码默认都是运行在strict模式下的 以下是一个简单的class关键字用法 class Person {name zhangsan; } let people new Person(); let Person2 class {name lisi; }; let people2 new Person2(); console.log(people, people2);可以看到类有两个定义方法一个是类声明即class 类名还有一个是类表达式类表达式可以命名也可以不命名即 var/let/const 局部名称 class [类名] {} 无论是类声明还是类表达式都不会提升想要使用类就必须在类定义的后面 这种定义在class中的属性被称为公有字段如果在字段前加上#就成了私有字段 构造函数 如果我们希望在构造对象的时候传入一些参数就需要修改这个类的构造函数constructor class Person {constructor(name, age, address) {this.name namethis.age agethis.address address} } let people new Person(zhangsan, 18, wuhan) console.log(people)构造函数的名称确定为constructor如果一个类中含有多个constructor则会抛出一个错误 方法 原型方法 能被多个实例共享的方法 class Person {constructor(name, age, address) {this.name namethis.age agethis.address address}eating() {console.log(this.name eating...)}running() {console.log(this.name running...)} } let people new Person(zhangsan, 18, wuhan) console.log(people) people.running() people.running()访问器方法 我们可以针对对应的属性设置get和set来拦截原本的修改和读取操作 class Person {constructor(name, age, address) {this._name namethis.age agethis.address address}get name() {console.log(执行了读取操作)return this._name}set name(newName) {console.log(执行了设置操作)this._name newName} } let people new Person(zhangsan, 18, wuhan) console.log(people.name) people.name lisi注意如果get或set与属性名重复的话就会发生死循环 静态方法 静态方法则是指直接由类来调用的方法不需要实例通过static来定义静态方法 class Person {constructor(name, age, address) {this.name namethis.age agethis.address address}static birth(name, age, address) {return new Person(name, age, address)} } let people Person.birth(wangwu, 0, wuhan) console.log(people)继承 在ES6之前我们想要实现继承是十分麻烦且繁琐的如何在ES6之前实现继承可以看我这篇文章 js原型与原型链 而在ES6中有了新的关键字extends可以更方便的实现继承 class Person {constructor(name, age, address) {this.name namethis.age agethis.address address} } class Man extends Person { }super super关键字可以访问父类的方法与属性 需要注意的是在constructor中调用super前不能使用this 为什么在调用super前不能访问this可以看我这篇文章 未动笔未来可寄 super.prop可以访问父类的静态属性与方法 class Person {constructor(name, age, address) {this.name namethis.age agethis.address address}eating() {console.log(this.name eating...)} } class Man extends Person {constructor(...args) {super(...args)}eating() {super.eating()} } let people new Man(zhangsan, 18, wuhan) console.log(people) people.eating()minxin 因为js的继承只能继承一个类因为函数的显式原型不可能有多个 如果我们想要让子类有尽可能多的复用其他类就可以使用混入 混入的原理十分简单假如我们有ABC三个类我们希望C能继承AB两个类思路就是我们可以先让B继承A再让C继承B 我们可以将这个过程封装成一个函数再extends class Person {constructor(name, age, address) {this.name namethis.age agethis.address address}eating() {console.log(this.name eating...)} } function minix(BaseClass) {return class extends BaseClass {sleeping() {console.log(this.name sleeping...)}} } class Man extends minix(Person) {constructor(...args) {super(...args)}eating() {super.eating()} } let people new Man(zhangsan, 18, wuhan) console.log(people) people.eating() people.sleeping()关于多态 我觉得js是有多态多态的概念很简单同一操作作用于不同的对象可以有不同的解释产生不同的执行结果 就比如ab如果传入的是1和2返回的自然是3如果传入的是1和2返回的就是12 这么一看js也确实符合 多态最常用的实现方式就是重载与重写 重写在原型链上已经实现了不必再说关键就在于重载重载指同名但参数不同的方法但js中方法本身就可以传任意数量任意类型的参数我们可以通过if来判断不同类型的参数执行什么操作但这个算不算重载也很难说 我认为js作为一门弱类型的语言天然就应该是具有多态这个特性的
http://www.zqtcl.cn/news/110404/

相关文章:

  • 建设网站需要什么知识上海高端网页设计
  • 电子商务网站建设基本流程公司网站建设平台
  • 域名没过期 网站打不开怎么办素马设计顾问讲解价格
  • 怎么做非法彩票网站贵州网站开发哪家便宜
  • 青岛市医疗保险网站wordpress七牛云
  • 哪个浏览器可以做网站查询网站的外链
  • 浅析社区网站的建设有了网站源码 怎么建设网站
  • 苏州网站排名优化系统网页设计师
  • 网站开发定制推广杭州河南省的网页制作
  • 北京随喜设计网站国内好的seo网站
  • 网站中宣传彩页怎么做的网站建设评估及分析
  • 东莞php网站建设素材网站php程序源码
  • 怎么做免费视频网站模版网站可以做seo吗
  • 备案期间怎么做网站微动漫怎么制作
  • 精美的php个人网站源码公司网站建设方案书
  • 站长如何做视频类网站如何诊断网站
  • 个人怎么做网站优化在线做印章的网站
  • 自己做的小网站市场营销互联网营销
  • 程序员会搭建非法网站吗永久免费生成app网页
  • 重庆渝北做网站哪里便宜浙江建设职业学校网站
  • 移动端网站开发介绍品牌宣传网站
  • 做文案图片上什么网站seo具体优化流程
  • 摄影做网站中国电商公司排名
  • 比较好的平面设计网站国际进出口贸易网站
  • 网站集约化建设困难seo技术网网
  • 咸宁网站建设报价成都网站设计 冠辰
  • 织梦网站首页目录在哪里自己编写的网站如何放到wordpress
  • 检测网站为什么打不开了推广网站有哪些方式
  • 建设银行官方网站下载安装python可以做网站吗
  • 邢台好蜘蛛网站建设郑州市网络设计公司