构造函数的方法

一、封装

1.1命名空间

 // 命名空间:把变量当做属性,本质上是字面量对象let zsf = {uname : '李四',age : 22,email : 'zsf@qq.com'}let lxh = {uname : '张三',age : 21,email : 'lxh@qq.com'}let zwj = zsf;zwj.uname = '王五'
console.log( zsf.uname, lxh.uname );//缺点是 谁封装完只能谁使用,别人不能使用

1.2构造函数

 // 构造函数:把构造函数当做模板function Person(uname, age) {this.uname = uname;this.age = age;this.eat = function () {console.log("方法");};}let zsf = new Person("haha", 22);console.log(zsf);

1.3原型对象

 // 在原型上的成员(属性 和 方法) 都是共享给实例对象的,// _proto_,(原型)指向原型对象,每个对象都有的属性,非标准属性function Person(uname, age) {this.uname = uname;this.age = age;// this.eat = function () {//   console.log("方法");// };}Person.prototype.eat = function () {console.log("原型");};let obj = new Person("haha", 22);console.log(obj);

二、继承

原型继承

 function Person() {this.arms = 2;this.legs = 2;this.eyes = 2;// 人的行为this.walk = function () {};this.sing = function () {};this.sleep = function () {};}function Chinese() {// 中国人的特征skin = "yellow";language = "中文";}// 封装日本人的行为特征function Japanese() {// 日本人的特征skin = "yellow";language = "日语";}// 1.给原型对象继承// 2.指回去Chinese.prototype = new Person();Chinese.prototype.constructor = Chinese;Japanese.prototype = new Person();Japanese.prototype.constructor = Japanese;// console.log(p);let c1 = new Chinese();console.log(c1);let c2 = new Japanese();console.log(c2);

原型链


类的方法

一、封装

创建类:

 // 创建类class Person {// 此处编写封装逻辑name='小红'      //实例成员static age=22   //静态成员}// 实例化let p1 = new Person();console.log(p1);

构造封装函数:

  class Person {// 实例化时 立即执行// 构造函数、构造方法、构造器constructor (name, age) {   //并非是类中必须要存在的方法this.name = name;this.age = age;}// 实例方法walk () {console.log(this.name + '走路');}}// 实例化let p1 = new Person('小明', 18);p1.walk();

二、继承

2.1 extends

  class Person {// 父类的属性legs = 2;arms = 2;eyes = 2;// 父类的方法walk () {console.log('走路');}// 父类的方法sleep () {console.log('睡觉');}}// Chinese 继承了 Person 的所有特征class Chinese extends Person {}// 实例化let c1 = new Chinese();c1.walk();

2.2 super(在继承的过程中子类中 constructor 中必须调 super 函数,否则会有语法错误)

class Father {constructor (uname, age) {this.uname = uname;this.age = age;}qian () {console.log('哈哈哈');}}// 如果子类有自己的constructor,那么必须使用super调用父类的方法// super:调用父类的方法class Son extends Father {constructor (u, a, score) {super(u, a);// 必须先调用superthis.score = score;}qian () {console.log('嘻嘻嘻');super.qian();}}let s = new Son('儿子', 23, 99);console.log( s );s.qian();

以上这种情况就是说,子类有自己单独的属性或者方法,所以子类有自己的constructor,那么必须使用super调用父类的方法

JavaScript-封装与继承(两种)相关推荐

  1. JavaScript插入DMO的两种操作对比

    JavaScript插入DMO的两种操作 下面就来讲讲用到的一些知识的小总结 JavaScript概述 JavaScript简称JS,一种直译式(无需编译)脚本语言,是一种动态类型.弱类型.基于原型的 ...

  2. javascript定义数组的两种方式,获取各个元素的值

    <script type="text/javascript">             //创建数组并赋值             //1声明数组,分配空间,赋值    ...

  3. 用JavaScript写Session的两种方法

    方法一: 使用postback <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  4. 原声ajax的函数式封装,原生 js 封装 ajax的两种方式(get,post)

    /*ajax封装 @param option:传入一个对象 属性分别为(顺序可以打乱): url:请求的路径 type:请求的不同类型get或post data:发送的数据,格式:key1=value ...

  5. Redis工具类封装RedisUtils(两种)

    RedisTemplate工具类1 本文参考:https://blog.it-follower.com/posts/2563248908.html SpringBoot项目集成Redis相当简单,只需 ...

  6. Asp.Net Ajax的两种基本开发模式

    Asp.Net Ajax的两种基本开发模式 引言 最近花了一些时间,将微软Asp.Net官方的Ajax视频全部看了一遍,地址是http://www.asp.net/learn/ajax-videos/ ...

  7. oracle 判断是否位汉字,js判断字符是否是汉字的两种方法小结

    有时需要判断一个字符是不是汉字,比如在用户输入含有中英文的内容时,需要判断是否超过规定长度就要用到.用 Javascript 判断通常有两种方法. 1.用正则表达式判断 js判断字符是否是汉字 .co ...

  8. 利用Java的特性(类的封装,类的继承,抽象,多态)编写一个银行系统对两种卡(借记卡、信用卡)进行管理。

    文章目录 前言 一.关键技术 二.整体思路 三.运行界面 四.UML类图 总结 前言 模拟银行的系统,用户可以在银行填写相关基本信息,选择不同的银行卡类型开户(信用卡.借记卡),不同类型的卡在取款和消 ...

  9. python封装继承多态_浅谈JavaScript的面向对象和它的封装、继承、多态

    写在前面 既然是浅谈,就不会从原理上深度分析,只是帮助我们更好地理解... 面向对象与面向过程 面向对象和面向过程是两种不同的编程思想,刚开始接触编程的时候,我们大都是从面向过程起步的,毕竟像我一样, ...

  10. JavaScript 之封装、继承、多态

    封装   封装的目的是要隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别.在许多语言中也许提供了 private.public.protected 等关键字来提供不同的访 ...

最新文章

  1. python 列表生成式、lower()和upper()的使用
  2. Linux中perl脚本监控
  3. redis缓存策略小结
  4. BibTex (.bib) 文件的凝视
  5. 使用Lingobit Localizer汉化.net程序(Translate .net program using Lingobit Localizer)
  6. 系列10—消息中间件
  7. 关于在Flask中使用Restful
  8. 一篇英文文档中找出频数最多的10个单词
  9. VBScript:登录脚本
  10. java字符后移_java把字符串参数往后移3位后输出
  11. MAC OS安装Composer + Laravel
  12. 前端开发神器:grunt快速入门
  13. C++ Primer 笔记——嵌套类 局部类
  14. 使用OPENCV对图片进行角度旋转
  15. 顶级论文创新点怎么找?中国高校首次获CVPR最佳学生论文奖有感
  16. 输入输出工具技术(ITTO)要背吗?——软考高项笔记8
  17. 无法定位程序输入点于动态链接库上的解决方法分享
  18. gtp怎么安装系统_gpt格式硬盘如何安装win7系统教程
  19. 鼠标跟随flash代码_Flash动画设计之 MTV实例创作《不说再见》
  20. 从猎豹移动到瑞幸咖啡,看中国企业在海外的信誉破产

热门文章

  1. 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛
  2. Linux 学习手记(5):使用Vim文本编辑器
  3. UNIX环境高级编程——创建与打开IPC通道
  4. 2013.01.16 Python的面向对象编程
  5. Apache Solr 4.0今日发布
  6. Bailian2939 玩游戏【模拟】
  7. CCF NOI1041 志愿者选拔
  8. Web开发实用网站资源
  9. HDU2035 人见人爱A^B【快速模幂】
  10. 【读书笔记】—— 《从 0 到 1》