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

ES6入门---第三单元 模块一:类、继承

补充:

prototype 属性使您有能力向对象添加属性和方法。

object.prototype.name=value

 <script>function Person(name, age){this.name = name;this.age = age;}/* Person.prototype.showName = function(){return `名字为: ${this.name}`;};Person.prototype.showAge = function(){return `年龄为: ${this.age}`;}; */
//新旧版对比Object.assign(Person.prototype,{ //assign 合并showName(){return `名字为: ${this.name}`;},showAge(){return `年龄为: ${this.age}`;}});let p1 = new Person('Strive', 18);console.log(p1.showName());console.log(p1.showAge());</script>

【ES6】类:ES6里面class没有提升功能,在ES5,用函数模拟可以,默认函数提升

补充:

constructor 属性返回对创建此对象的数组函数的引用。

object.constructor
 class Person{//首字母大写!!!//类:constructor(name,age){ //构造方法(函数), 调用new时自动执行//console.log(`构造函数执行了, ${name}, ${age}`);this.name = name;this.age = age;}showName(){return `名字为: ${this.name}`;}showAge(){return `年龄: ${this.age}`;}}let p1 = new Person('Strive', 18);console.log(p1.showName(), p1.showAge());

快捷定义函数: 省打麻烦字

let a = 'strive';let b = 'method';class Person{[a+b](){}}

 this很难出错,若出错:矫正函数

    1. fn.call(this指向谁, args1, args2....)
    2. fn.apply(this指向谁, [args1, args2....])
    3. fn.bind()

【get set】class里面取值函数(getter), 存值函数(setter)

例:

 class Person{constructor(){}get aaa(){return `aaa的属性`;}set aaa(val){console.log(`设置aaa属性,值为:${val}`);}}let p1 = new Person();p1.aaa='123';console.log(p1.aaa);

【静态方法】: 就是类身上方法 可以直接类名调用 不用重新创建json
    static aaa(){

    }

    父类.aaa();

 继承:

【老方法】

  //父类function Person(name){this.name = name;}Person.prototype.showName = function(){return `名字是: ${this.name}`;};//子类function Student(name,skill){Person.call(this,name); //继承属性  //使用矫正this函数this.skill = skill;}Student.prototype = new Person(); //继承方法//调用let stu1 = new Student('Strive','逃学');console.log(stu1.showName());

【新】

  //父类class Person{constructor(name){this.name = name;}showName(){return `名字为: ${this.name}`;}}//子类class Student extends Person{constructor(name,skill){//别忘了加上参数super(name);//想写子类自己的构造函数必须super()把父类construct函数拉过来 this.skill = skill;}showSkill(){return  `哥们儿的技能为: ${this.skill}`;}}//调用let stu1 = new Student('Strive','逃学');console.log(stu1.showSkill());

*子类父类都有同一函数名的函数 怎么办??

【补充】调用父级里函数 格式:super.函数名()

例:

//子类class Student extends Person{constructor(name,skill){super(name);this.skill = skill;}showName(){super.showName(); //先父级的方法执行//TODO 可以加做子级事情的其他了console.log('子类里的showName');}showSkill(){return  `哥们儿的技能为: ${this.skill}`;}}

在父级函数基础上加上子级自己的函数!

http://www.xdnf.cn/news/3987.html

相关文章:

  • 【操作系统】死锁
  • [pdf,epub]292页《分析模式》漫谈合集01-59提供下载
  • 【C语言入门级教学】VS使用调试技巧1
  • 算法笔记.求约数
  • 303.整数拆分
  • Seata TCC 实战笔记:从零搭建分布式事务 Demo (含源码)
  • Linux的时间同步服务器
  • 【LLM】deepseek R1之GRPO训练笔记(持续更新)
  • 【TF-BERT】基于张量的融合BERT多模态情感分析
  • 代码随想录算法训练营Day44
  • PyTorch_张量索引操作
  • Spring Cloud Gateway路由+断言+过滤
  • Flask + SQLite 简单案例
  • 位置权限关掉还能看到IP属地吗?全面解析定位与IP的关系
  • 腾讯云服务器技术全景解析:从基础架构到行业赋能​
  • React-router v7 第七章(导航)
  • 如何使用VSCode编写C、C++和Python程序
  • ES类迁移方法
  • 【翻译、转载】MCP 提示 (Prompts)
  • Kubernetes 安装 minikube
  • 计算机图形学编程(使用OpenGL和C++)(第2版) 01.环境搭建
  • Python的ArcPy基于Excel表格对大量遥感影像批量重分类
  • 第8章 Python 其他数据类型概述
  • LeetCode 1007. 行相等的最少多米诺旋转 题解
  • ZArchiver正版:高效文件管理,完美解压体验
  • 二、大模型原理:图文解析Transformer原理与代码
  • 第十章.XML
  • Android第三次面试总结之activity和线程池篇(补充)
  • C++基础算法:Dijkstra
  • Python 函数装饰器和闭包(变量作用域规则)