第三十一章.面向对象编程-补充

  • 封装性
//工厂模式function student(name,id){let obj = {};obj.name = name;obj.id = id;obj.company = "外经贸";obj.say = function(){console.log(`我是${this.name},学号:${this.id}`);};return obj;}let pika = student("皮卡","224");let ayuan = student("阿远","221");let weige = student("伟哥","209");console.log(pika);console.log(ayuan);console.log(weige);pika.say();ayuan.say();weige.say();
/** new关键词**   new关键词后面要跟上一个函数** ? 函数执行之前加new对这个函数有影响呢?*   - 函数内部的this指向会改变( 函数内部自动创建一个全新的对象,this指向这个对象 )*   - 函数默认返回这个对象**   这个函数称之为 构造函数*** new Date()* new Object()* new Array()* new RegExp()* new XMLHTTPRequest()* new Promise()* new Image()*** */function goudan(){this.x = 10;this.y = 20;}// console.log(goudan());console.log(new goudan());console.log(new goudan());console.log(new goudan());console.log(new goudan());console.log(new goudan());
 //构造函数 -- 约定:所有构造函数首字母大写function Student(name,id){this.name = name;this.id = id;this.university = "外交贸";this.say = function(){console.log(`我是${this.name},学号:${this.id}`);};}//实例化let pika = new Student("皮卡","224"); //实例let ayuan = new Student("阿远","221"); //实例let weige = new Student("伟哥","209"); //实例console.log(pika);console.log(ayuan);console.log(weige);pika.say();ayuan.say();weige.say();
  • prototype原型
console.log(pika === ayuan);//fasle
console.log(pika.say === ayuan.say);//true
  • proto 原型链
function Fn(){this.x = 10;}Fn.prototype   .x = 20;// console.log(Fn.prototype);let a = new Fn();console.log(a.__proto__ === Fn.prototype);
  • 继承性
 /** 继承:*   儿子继承爸爸,*   爸爸有的儿子都要有,*   爸爸没有的儿子可以新增,*   但是儿子的新增不能改变爸爸的任何东西** */function Person(name,age){this.name = name;this.age = age;}Person.prototype.say = function(){console.log(this.name+":"+this.age);};//想基于Person创建出一个Teacher类function Teacher(name,age,id){//私有属性的继承 call它Person.call(this,name,age);//私有属性的新增this.id = id;}//原型的继承// Teacher.prototype = Person.prototype; //建立了引用,行不通Teacher.prototype = new Person();//原型的新增Teacher.prototype.university = "外经贸";let a = new Person("小A",18);console.log(a);//Person{age:18,name:"小A"}let b = new Teacher("简老师",20,"201801624");console.log(b);//Teacher{age:20,id:"201801624",name:"简老师"}a.say();//小A:18b.say();//简老师:20
//通过constructor来写继承
function F(){}F.prototype = Person.prototype;Teacher.prototype = new F();//修复一下constructorTeacher.prototype.constructor = Teacher;//原型的新增Teacher.prototype.univerity = "外经贸";let a = new Person("小A",18);console.log(a);//Person{age:18,name:"小A"}let b = new Teacher("简老师",20,"201801624");console.log(b);//Teacher{age:20,id:"201801624",name:"简老师"}a.say();//小A:18b.say();//简老师:20
  • class
/** ES6 的 构造函数* *///定义构造函数class Person{//私有属性constructor(n,a) {this.name = n;this.age = a;}//公共属性 -- 只允许函数充当公共属性say(){console.log(this.name,this.age);}}//继承 利用关键字 extends   感觉就像是Java啊哈哈哈~class Teacher extends Person{constructor(n,a,id) {//super 关键字 //继承之后,一定要在这里执行super(),这样才能继承原来的私有属性super(n,a);//私有属性的新增this.id = id;}//原型默认就已经继承了,我们只需要继续写原型的新增就可以company(){return "潭州教育";}}let a = new Person("小A",18);console.log(a);//Person{age:18,name:"小A"}let b = new Teacher("简老师",20,"201801624");console.log(b);//Teacher{age:20,id:"201801624",name:"简老师"}a.say();//小A:18b.say();//简老师:20

31-面向对象编程-补充相关推荐

  1. Python类及面向对象编程【转】

    Python类及面向对象编程 类是用来创建数据结构和新类型对象的主要机制.本章的主题就是类,面向对象编程和设计不是本章的重点.本章假定你具有数据结构的背景知识及一定的面向对象的编程经验(其它面向对象的 ...

  2. System Verilog面向对象编程(OPP)基础——类(class)的基本使用

    该文主要是笔者梳理绿皮书对应章节的内容 System Verilog面向对象编程OPP基础--类(class)的基本使用 面向对象编程 概述 考虑名词而非动词 编写第一个类class OOP术语 创建 ...

  3. 面向对象编程,设计原则,设计模式

    2019独角兽企业重金招聘Python工程师标准>>> 面向对象编程,设计原则,设计模式 面向对象编程 面向对象编程与面向过程编程的区别 面向对象软件开发的优点 面向对象编程语言 C ...

  4. python归一化 增大差异_简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性pr ...

  5. [.net 面向对象编程基础] (20) LINQ使用

    [.net 面向对象编程基础] (20)  LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integr ...

  6. python浓缩(13)面向对象编程

    为什么80%的码农都做不了架构师?>>>    本章主题 ? 引言 ? 面向对象编程 ? 类 ? 实例 ? 绑定与方法调用 ? 子类,派生和继承 ? 内建函数 ? 定制类 ? 私有性 ...

  7. 铁乐学python_day18-19_面向对象编程1

    以下笔记绝大部分(百分之80或以上)摘自我的授课老师之一:老男孩教育中的景老师. 她上课讲的知识点由浅入深,引人入胜,听她的课完全不会感觉到困阿,而且不知不觉中就感觉掌握了. 她的博客是: http: ...

  8. Python零基础速成班-第10讲-Python面向对象编程(下),Property属性、特殊方法、设计模式、链表应用

    Python零基础速成班-第10讲-Python面向对象编程(下),Property属性.特殊方法.设计模式.链表应用 学习目标 面向对象编程 接上一讲:Property属性.特殊方法.设计模式 面向 ...

  9. 【面向对象编程】(4) 类的继承,重构父类中的方法

    各位同学好,今天和大家分享一下面向对象编程中,类的三大特征之继承.主要介绍:子类继承父类的基本方法:重写父类的类方法:重构父类的初始化方法:super() 方法.本节主要是单继承,多继承在下一节中介绍 ...

最新文章

  1. iOS经典讲解之获取沙盒文件路径写入和读取简单对象
  2. 如何构建顶部导航条_如何构建导航栏
  3. 强势 图解 AC自动机(保证您一次就能学会!)
  4. 现代密码学4.1--消息完整性
  5. 使用DETR指令提取电子客票票面信息
  6. Hepatology | 朱黎琴/于吉洋团队合作揭示新生儿肝脏发育中肝母细胞瘤转移的新机制...
  7. windows下nc(netcat)的安装及使用
  8. XBRL 可扩展商业报告语言
  9. linux go环境安装
  10. python 表白程序代码_程序员如何实现表白代码
  11. 啊哈C语言4.9练习
  12. c语言从入门到秃头表情包,c语言从入门到放弃表情包 - c语言从入门到放弃微信表情包 - c语言从入门到放弃QQ表情包 - 发表情 fabiaoqing.com...
  13. 免费的PPT素材网站
  14. “天天向上”力量的Python教学实例
  15. 【word】设置背景为绿豆沙保护色
  16. Java Web学习day25------Vue和综合案例
  17. python简易版爬虫
  18. 计算机数据存储原理 以及 进制
  19. Exchange 常见问题之十
  20. 给小朋友讲故事——谈谈牛顿,他是个科学家么?(音频)

热门文章

  1. 微信小程序|使用小程序制作一个世界杯球员识别工具
  2. 使用mysql编写学生期末成绩表的流程以及源码
  3. mac查看公网IP的方法
  4. python怎么在画布上写字_Python3 tkinter基础 Canvas create_text 在画布上添加文字
  5. 【每日新闻】 百度张亚勤:小公司不要做平台,应聚焦解决实际问题 | 工信部:确保取消流量“漫游”费7月1日如期兑现...
  6. css伪元素实现选中效果【打勾效果】
  7. 生物发光检测仪——生物发光、化学发光等基于发光的测定通用型检测
  8. Microsoft Edge快捷键
  9. 语音识别框架原理简述
  10. 计算机应用要求手速吗,激情燃烧岁月,键盘续写篇章——计算机应用技术专业成功举办第二届手速大赛...