之前小编对于类和类的基本特征(所谓的封装、继承、多态)理解一直不是很到位,同时在实际项目应用中也用的比较少,今天小编就结合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. springboot项目部署(war包)

    将springboot项目打包成war,并且部署到tomcat.比较麻烦,自己踩的坑也比较多.算了一下,找bug的时间,有两天熬到凌晨2点. 修改pom.xml使得打包成war <groupId ...

  2. GUI简单实战——贪吃蛇

    将前面学到的GUI基础知识完成实战,完成一个简单的贪吃蛇项目 项目功能 用键盘上下左右实现贪吃蛇的自动移动 贪吃蛇吃到食物后,长度加一,分数加一 贪吃蛇吃到自己的身体,则游戏结束 按空格键实现游戏的暂 ...

  3. Windows server 2003域控迁移到2012

    1:  windows server 2003 额外域控升级为 windows server 2003主域控 (因为原域控制器某些服务损坏,于是采用将备用域控升级为主域控的方法) https://we ...

  4. 『政善治』Postman工具 — 8、Postman中Pre-request Script的使用

    目录 1.Pre-request Script介绍 2.常用SNIPPETS(片段)说明 (1)获取变量脚本: (2)设置变量脚本: (3)清空变量脚本: (4)Send a request代码片段 ...

  5. 更好的滚动体验>better-scroll

    认识better-scroll better-scroll是一款重点用于解决移动端(已支持PC)各种滚动场景需求的插件,可使页面滚动效果更加流畅且富有弹性 better-scroll是用纯JavaSc ...

  6. BUAA软件工程热身作业

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...

  7. 2021年主流CRM系统盘点

    面对市面上五花八门的CRM系统,相信您在选择的时候肯定是一头雾水.哪个CRM系统功能最强大?哪个CRM系统性价比最高?哪个CRM系统最适合企业使用?本篇文章小编将选出几家有代表性的CRM系统,并进行对 ...

  8. 一文学完makefile语法

    一.开始 1.Hello World 新建一个makefile文件,写入如下内容, hello: echo "Hello World" clean: echo "clea ...

  9. [Python] 安装 & 常用命令

    安装 http://www.xue51.com/soft/2301.html 常用命令 #查看pip版本$ pip --version#安装pip$ sudo apt install python3- ...

  10. CSS元素的盒类型

    一.css简介 CSS是Cascading Style Sheet的缩写,中文称层叠样式表.HTML中的元素都有着自己的属性和默认样式,CSS控制HTML内标签显示不同布局样式.控制对应html标签颜 ...