Javascript基础与面向对象基础~第四讲 Javascript中的类对象
今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声“抱歉”!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一般是从这点上看出来的。
占占对类的定义:
类是对现实中的事物的抽象,一个类一般由属性和方法构成,属性是一些固定的信息,而方法是类的某种行为,类往往用来抽象一些复杂的对象,类与类这间可以进行继承,一般通过JS的function实现,JS中的类对象是实现JS面向对象的基础。
占占对结构体的定义:
一个结构体也是对现实事物的一种抽象,它用来表示逻辑简单的对象,一般通过JS的object对象实现
实现结构体的代码:
//简单结构体对象var Animal = {Name: "动物",Type: "",Food: ["草", "肉"],Print: function () {console.log("名称:" + this.Name + ",类型:" + this.Type + ",食物:" + this.Food);}};Animal.Print();//调用
实现复杂的类的代码:
//复杂的类型对象var AnimalFun = function (name, type) {this.Name = name;this.Type = type;this.Food = ["草", "肉"];this.Print = function () {console.log("名称:" + this.Name + ",类型:" + this.Type + ",食物:" + this.Food);}};var animalFun = new AnimalFun();animalFun.Print();
子类去继承父类,但复写父类的属性,调用父类的方法,代码如下:
//子类可以继承父类,并可以复写它的属性var Dog = function (name, type, food) {//调用父类构造方法,并传递name参数 AnimalFun.call(this, name, type);//复写属性 this.Food = food;}//将Dog的原型链指向AnimalFun对象 Dog.prototype = new AnimalFun();//重置constructor属性为Student类,由于设置了Student类的prototype为Person时 //擦除了constructor属性 Dog.prototype.constructor = Dog;//实例化Dog类 var s = new Dog('狗', '低级动物', '肉');//调用父类的方法 s.Print(); //结果:名称:狗,类型:低级动物,食物:肉
小知识:JS实现类的继承的机制是这样的:
在子类构造函数(constructor)中调用父类构造函数(父类.call()).
修改子类prototype(原型链)属性为父类的实例.(prototype一般用来实现对函数的扩展,Dog.prototype = new AnimalFun();表示对父类AnimalFun进行扩展)
重置子类的prototype的constructor属性为子类.
感谢您的阅读!
本文转自博客园张占岭(仓储大叔)的博客,原文链接:Javascript基础与面向对象基础~第四讲 Javascript中的类对象,如需转载请自行联系原博主。
Javascript基础与面向对象基础~第四讲 Javascript中的类对象相关推荐
- AcWing基础算法课Level-2 第四讲 数学知识
AcWing基础算法课Level-2 第四讲 数学知识 您将学会以下数学名词 质数,试除法,埃式筛法,线性筛,辗转相除,算术基本定理,质因数分解,欧拉函数,快速幂,费马小定理,逆元,拓展欧几里得,一次 ...
- 开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModule中的几大事件
本文主要介绍HttpModule,它在一个网页请求过程中是一个怎样的过程是我们要知道的,在网页加载过程中HttpModule在何时被执行也是我们要知道的,以及,HttpModule在网页请求过程中,所 ...
- java中过滤流_第十四讲 Java中的字节流和过滤流
第十四讲Java中的字节流和过滤流 主要内容 InputStream和FileInputStream OutputStream和FileOutputStream 文件字节IO流应用举例 过滤流类和常用 ...
- JavaScript – 6.JS面向对象基础(*) + 7.Array对象 + 8.JS中的Dictionary + 9.数组、for及其他...
6.JS面向对象基础(*) 7.Array对象 7.1 练习:求一个数组中的最大值.定义成函数. 7.2 练习:将一个字符串数组输出为|分割的形式,比如"刘在石|金钟国|李光洙|HAHA|宋 ...
- Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))
面向对象是Python最重要的特性,在Python中一切数据类型都是面向对象的. 1.面向对象概述 面向对象的编程思想是,按照真实世界客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建软件系 ...
- python面向对象基础_python面向对象基础
面向对象基础 一.面向对象和面向过程 面向过程: 优点:复杂问题流程化,进而简单化 确定:可扩展性差 面向对象: 优点:可扩展性高 缺点:编写复杂度高于面向过程 二.类与对象 类即类别.种类,是面向对 ...
- 【Python基础】面向对象基础和特性
Python面向对象 面向对象基础 定义类 创建对象 添加和获取对象属性 魔法方法 对象的生命周期 私有属性和私有方法 面向对象特性 封装 封装案例演练 继承 继承的传递性 方法的重写 父类的私有属性 ...
- Javascript基础与面向对象基础~第六讲 Javascript中的事件机制
回到目录 事件机制,在JS中感觉很容易让人接受,一个鼠标被按下时会发生一些事情,一个键盘的键被抬起时同样可以发生一些事情,这种比喻很容易让人接受,不是吗,呵呵. 下面我将JS中几个主要的事件说一下,然 ...
- 【基础篇】Kotlin第四讲-类、对象和接口
类 类是逻辑组织的基本单元,类含有以下成分:依赖包,类名,构造方法,属性,成员方法,伴生对象,接口,父类等 类的构造方法的完整逻辑过程 先考虑主构造函数,当主构造函数不够用时,再引入从构造函数.最初的 ...
最新文章
- 未转变者空投指令服务器,未转变者空投指令 | 手游网游页游攻略大全
- 【UVA11324】The Largest Clique (SCC)
- B14_NumPy算术函数( add(),subtract(),multiply() 和 divide()、reciprocal()、power()、mod())
- 火线妹在线求偶,想找高质量男朋,粉丝:有没有绯闻心里没数?
- 小程序卡片叠层切换卡片_现在,卡片和清单在哪里?
- 【ArcGIS Pro风暴】Data Interoperability Tools快速将CASS等高线dwg转为shp案例教程
- P4590-[TJOI2018]游园会【dp套dp】
- MySQL数据库存入日期(java.sql.Date)数据,天数会少一天的问题
- Verizon部署美国最大小型基站系统
- Matlab x2fx函数
- Delphi 精选文章地址
- 牛客小白月赛31——补题记
- Python设置显示屏分辨率
- 你还不知道高情商表现怎么表现?
- C语言16进制乘法怎么算,16进制数之间的加法怎么算
- 2019年 8月7日 日报
- android 微博开发者平台,微博Android平台SDK文档V.pdf
- 逆向教程-U3D游戏逆向分析(伊甸逆向分析)
- 算术左移,逻辑左移,算术右移,逻辑右移之间的区别
- WEB 请求处理二:Nginx 请求 反向代理
热门文章
- 【文本分类】Recurrent Convolutional Neural Networks for Text Classification
- GNT格式转换为PNG格式
- ubuntu报错解决:The following packages have unmet dependencies:
- 电机测试matlab,基于MATLAB的电机故障诊断模型训练与测试平台
- android 半透明pop,Android实现AppCompatActivity全屏半透明
- Specification使用in
- matlab动力学方程,机器人动力学方程(二):拉格朗日法
- 韶关2020年计算机专业录取分,韶关学院2020年广东各批次录取分数线
- 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义
- iOS多线程中performSelector: 和dispatch_time的不同