之前小编对于类和类的基本特征(所谓的封装、继承、多态)理解一直不是很到位,同时在实际项目应用中也用的比较少,今天小编就结合ES5中的基本用法和大家聊聊,希望小伙伴会在这篇文章有属于自己的收获,并能够在今后的项目中有实际应用。大家还可以关注我的微信公众号,蜗牛全栈。
一、类的基本用法

function People(name,age){
// this指向的是People{}
this.name = name
this.age = age
} let p1 = new People("lilei",30)
console.log(p1) // People{name:"lilei",age:34} let p2 = new People("hanmei",18)
console.log(p2) // People{name:"hanmei",age:18}

二、类的方法:该实例中会有一些资源浪费,因为在每一个实例化的时候,在类中都会存在该方法,实际中为了节约资源,会将类方法定义在原型上

function People(name,age){
// this指向的是People{}
this.name = name
this.age = age
this.showName = function(){
console.log("当前人的名字是:"+this.name)
}
} let p1 = new People("lilei",30)
console.log(p1) // People{name:"lilei",age:34}
p1.showName() // 当前人的名字是:lilei let p2 = new People("hanmei",18)
console.log(p2) // People{name:"hanmei",age:18}
p2.showName() // 当前人的名字是:hanmei

三、实际类方法创建实例

function People(name,age){
this.name = name
this.age = age
}
People.prototype.showName = function(){
console.log(this.name)
}
let p1 = new People("lilei",30)
console.log(p1) // People{name:"lilei",age:34}
p1.showName() // lilei let p2 = new People("hanmei",18)
console.log(p2) // People{name:"hanmei",age:18}
p2.showName() // hanmei

四、类的静态属性和静态方法:上述的例如name和age属性,都是实例化之后才有的属性和方法,上述属性和方法一般称为实例属性和实例方法,需要类实例化之后才可以处理的属性,实例方法需要把类实例化之后才能调用。静态属性和静态方法可以通过类直接调用,不必实例化。类的静态属性

function People(name,age){
// this指向的是People{}
this.name = name // 实例属性
this.age = age // 实例属性
}
People.count = 10
console.log(People.count) // 10

类的静态方法

function People(name,age){
// this指向的是People{}
this.name = name // 实例属性
this.age = age // 实例属性
}
People.getCount = function(){
console.log("当前数字为"+People.count)
}
console.log(People.count) // 10

五、类的继承
1、构造函数继承:只能继承父类的属性,不能继承父类的方法

// 父类
function Animal(name){
this.name = name
} Animal.prototype.showName = function(){
console.log("名字是:"+this.name)
} // 子类
function Dog(name,color){
Animal.call(this,name) // 继承属性
this.color = color
} let d1 = new Dog("wangcai","white")
console.log(d1) // Dog{name:"wangcai",color:"white"}
d1.showName() // 报错:d1.showName is not a function // 构造函数继承只能继承父类的属性,不能继承父类的方法

2、原型继承:只能继承父类方法,不能继承父类属性

// 父类
function Animal(name){
this.name = name
} Animal.prototype.showName = function(){
console.log("名字是:"+this.name)
} // 子类
function Dog(name,color){
// Animal.call(this,name) // 继承属性
this.color = color
}
Dog.prototype = new Animal()
Dog.prototype.constuctor = Dog let d1 = new Dog("wangcai","white")
console.log(d1) // Dog{name:"wangcai",color:"white"}
d1.showName() // undefind

ES5中的类的更多相关文章

  1. Es5中的类和静态方法 继承

    Es5中的类和静态方法 继承(原型链继承.对象冒充继承.原型链+对象冒充组合继承) // es5里面的类 //1.最简单的类 // function Person(){ // this.name='张 ...

  2. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  3. ES5中的类与继承

    最近在重新复习TypeScript,看到类这块的时候自然会和ES5中的类写法进行对比加深印象. 发现ES5的类与继承一些细节还是挺多的,时间久了容易忘记,特此记录下. 首先是ES5的类定义,这没什么好 ...

  4. Typescript中的类 Es5中的类和静态方法和继承(原型链继承、对象冒充继承、原型链+对象冒充组合继承)

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. 在ES5中模拟类

    1.Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. var _this = Object.create(fn.prototype);这句代码的 ...

  6. ES6中的类

    前面的话 大多数面向对象的编程语言都支持类和类继承的特性,而JS却不支持这些特性,只能通过其他方法定义并关联多个相似的对象,这种状态一直延续到了ES5.由于类似的库层出不穷,最终还是在ECMAScri ...

  7. koa 基础(十七)原生 JS 中的类、静态方法、继承

    1.app.js /** * 原生 JS 中的类.静态方法.继承 * es5中的类和静态方法 */ function Person(name, age) { // 构造函数里面的方法和属性 this. ...

  8. 《深入理解ES6》笔记—— JavaScript中的类class(9)

    ES5中的近类结构 ES5以及之前的版本,没有类的概念,但是聪明的JavaScript开发者,为了实现面向对象,创建了特殊的近类结构. ES5中创建类的方法:新建一个构造函数,定义一个方法并且赋值给构 ...

  9. ES6中的类继承和ES5中的继承模式详解

    1.ES5中的继承模式 我们先看ES5中的继承. 既然要实现继承,首先我们得要有一个父类. Animal.prototype.eat = function(food) { console.log(th ...

随机推荐

  1. 【JavaScript】Leetcode每日一题-平方数之和

    [JavaScript]Leetcode每日一题-平方数之和 [题目描述] 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例1: 输入:c = 5 ...

  2. Ubuntu20.04连接WiFi

    电脑安装了Ubuntu20.04后发现没办法连接WiFi,也找不到WiFi图标,一般来说是因为Ubuntu系统没有网卡驱动,安装一下即可 解决办法如下: 先用网线或者手机开热点连接到到电脑,让电脑有网 ...

  3. 【apache】使用HttpClient,进行简单网页抓取

    1 package com.lw.httpclient.test; 2 import org.apache.http.client.methods.CloseableHttpResponse; 3 i ...

  4. HashMap方法源码分析

    本文将分析put(),resize(),get()和remove()方法的源码 putval()方法 大致步骤:计算key的hash值:根据hash值计算数组下标:判断下标处是否有节点,无节点则直接插 ...

  5. 基于RestAssured实现接口自动化

    RestAssured是一款强大的接口自动化框架, 旨在使用方便的DSL,简化的接口自动化. 下面是基于RestAssured扩展的一个简单框架示例, 先看看用例的风格: package testca ...

  6. Azure Storage 利用 azCopy 复制迁移数据

    一,引言 前两天遇到了Azure Blob Storage 需要迁移到另外的一个 Azure Blob Storage 中.手动下载.上传已经无法满足了,得另寻一种方式了 AzCopy.Azure 为 ...

  7. Scrum Meeting 2

    Basic Info where:三号教学楼 when:2020/4/25 target: 简要汇报一下已完成任务,下一步计划与遇到的问题 Progress Team Member Position ...

  8. 获取Eureka服务列表的各种场景

    一.第一类服务注册到eureka中,获取服务列表 1.基于SpringClientFactory获取服务列表 /** * <一句话功能简述> * <功能详细描述> * * @a ...

  9. linux服务器默认使用中文字符集zh_CN.UTF-8

    linux服务器默认使用中文字符集zh_CN.UTF-8 一.问题描述和相关概念 linux服务器的字符集设置可能影响到网站页面出现 "???" 等问号乱码,还有可能导致文件中的汉 ...

  10. suse12 设置ssh 远程连接

    前提:已安装相应的sshd软件包. 编辑sshd_config文件:vim /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthenticatio ...