JavaScript-封装与继承(两种)
构造函数的方法
一、封装
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-封装与继承(两种)相关推荐
- JavaScript插入DMO的两种操作对比
JavaScript插入DMO的两种操作 下面就来讲讲用到的一些知识的小总结 JavaScript概述 JavaScript简称JS,一种直译式(无需编译)脚本语言,是一种动态类型.弱类型.基于原型的 ...
- javascript定义数组的两种方式,获取各个元素的值
<script type="text/javascript"> //创建数组并赋值 //1声明数组,分配空间,赋值 ...
- 用JavaScript写Session的两种方法
方法一: 使用postback <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- 原声ajax的函数式封装,原生 js 封装 ajax的两种方式(get,post)
/*ajax封装 @param option:传入一个对象 属性分别为(顺序可以打乱): url:请求的路径 type:请求的不同类型get或post data:发送的数据,格式:key1=value ...
- Redis工具类封装RedisUtils(两种)
RedisTemplate工具类1 本文参考:https://blog.it-follower.com/posts/2563248908.html SpringBoot项目集成Redis相当简单,只需 ...
- Asp.Net Ajax的两种基本开发模式
Asp.Net Ajax的两种基本开发模式 引言 最近花了一些时间,将微软Asp.Net官方的Ajax视频全部看了一遍,地址是http://www.asp.net/learn/ajax-videos/ ...
- oracle 判断是否位汉字,js判断字符是否是汉字的两种方法小结
有时需要判断一个字符是不是汉字,比如在用户输入含有中英文的内容时,需要判断是否超过规定长度就要用到.用 Javascript 判断通常有两种方法. 1.用正则表达式判断 js判断字符是否是汉字 .co ...
- 利用Java的特性(类的封装,类的继承,抽象,多态)编写一个银行系统对两种卡(借记卡、信用卡)进行管理。
文章目录 前言 一.关键技术 二.整体思路 三.运行界面 四.UML类图 总结 前言 模拟银行的系统,用户可以在银行填写相关基本信息,选择不同的银行卡类型开户(信用卡.借记卡),不同类型的卡在取款和消 ...
- python封装继承多态_浅谈JavaScript的面向对象和它的封装、继承、多态
写在前面 既然是浅谈,就不会从原理上深度分析,只是帮助我们更好地理解... 面向对象与面向过程 面向对象和面向过程是两种不同的编程思想,刚开始接触编程的时候,我们大都是从面向过程起步的,毕竟像我一样, ...
- JavaScript 之封装、继承、多态
封装 封装的目的是要隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别.在许多语言中也许提供了 private.public.protected 等关键字来提供不同的访 ...
最新文章
- python 列表生成式、lower()和upper()的使用
- Linux中perl脚本监控
- redis缓存策略小结
- BibTex (.bib) 文件的凝视
- 使用Lingobit Localizer汉化.net程序(Translate .net program using Lingobit Localizer)
- 系列10—消息中间件
- 关于在Flask中使用Restful
- 一篇英文文档中找出频数最多的10个单词
- VBScript:登录脚本
- java字符后移_java把字符串参数往后移3位后输出
- MAC OS安装Composer + Laravel
- 前端开发神器:grunt快速入门
- C++ Primer 笔记——嵌套类 局部类
- 使用OPENCV对图片进行角度旋转
- 顶级论文创新点怎么找?中国高校首次获CVPR最佳学生论文奖有感
- 输入输出工具技术(ITTO)要背吗?——软考高项笔记8
- 无法定位程序输入点于动态链接库上的解决方法分享
- gtp怎么安装系统_gpt格式硬盘如何安装win7系统教程
- 鼠标跟随flash代码_Flash动画设计之 MTV实例创作《不说再见》
- 从猎豹移动到瑞幸咖啡,看中国企业在海外的信誉破产