前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ES6系列笔记-面向对象/继承

ES6系列笔记-面向对象/继承

作者头像
王小婷
发布于 2025-05-19 07:40:50
发布于 2025-05-19 07:40:50
8400
代码可运行
举报
文章被收录于专栏:编程微刊编程微刊
运行总次数:0
代码可运行
一:面向对象

一般面向对象的写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
    <script>
        //一般面向对象的写法
        function User(name, pass) {
            this.name = name;
            this.pass = pass;
        }
        User.prototype.showName = function() {
            console.log(this.name);
        }
        User.prototype.showPass = function() {
            console.log(this.pass);
        }
        var a = new User("wangting", "123456");
        a.showName();
        a.showPass();
    </script>
</html>

存在问题 : User既是构造函数,又是类,傻傻分不清 打印结果

5640239-3e3ebc196ab0e4cb.png
5640239-3e3ebc196ab0e4cb.png

ES6面向对象写法 好处: 1:class关键字,构造器 constructor和类User分开写 2:class里面直接写方法,方法不需要再外挂出去了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
    <script>
        //ES6面向对象写法
        class User {
            constructor(name, pass) {
                this.name = name;
                this.pass = pass;
            }
            showName() {
                console.log(this.name);
            }
            showPass() {
                console.log(this.pass);
            }
        }
        var a = new User("wangting", "123456");
        a.showName();
        a.showPass();
      
    </script>
</html>

打印结果

5640239-c6fc2d3c48510bad.png
5640239-c6fc2d3c48510bad.png
二:继承

继承一个已有类,扩展它的功能 一般的继承的写法(es5继承方法),这是在日常开发中经常能看到的写法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
    <script>
        //一般写法
        function User(name, pass) {
            this.name = name;
            this.pass = pass;
        }
        User.prototype.showName = function() {
            console.log(this.name);
        }
        User.prototype.showPass = function() {
            console.log(this.pass);
        }

        //继承方法
        function Children(name, pass, level) {
            User.call(this, name, pass);
            this.level = level;
        }
        //方法
        Children.prototype = new User();
        Children.prototype.constructor = Children;
        Children.prototype.showLevel = function() {
            console.log(this.level)
        }
        var a = new Children("wangxiaoting", "123", 3);
        a.showName();
        a.showPass();
        a.showLevel();
    </script>
</html>

打印结果:

5640239-536166593b7aea9b.png
5640239-536166593b7aea9b.png

ES6的继承:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
    <script>
        //ES6面向对象写法
        class User {
            constructor(name, pass) {
                this.name = name;
                this.pass = pass;
            }
            showName() {
                console.log(this.name);
            }
            showPass() {
                console.log(this.pass);
            }
        }
        //es6的继承(重点)
        class Children extends User {
            constructor(name, pass, level) {
                //继承父级属性
                //同时执行父类的构造函数
                super(name, pass);
                //继续写自己这一层该有的属性
                this.level = level;
            }
            //关于方法,就不需要像旧版new出来xx给.prototype了,因为 extends已经扩展完成了
            //直接写就行
            showLevel() {
                console.log(this.level);
            }
        }
        let c = new Children('wangxiaoting', '123', 23);
        c.showName();
        c.showPass();
        c.showLevel();
    </script>
</html>

打印结果:

5640239-cef2100ba4a063b9.png
5640239-cef2100ba4a063b9.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ES6.Class技术
​ 编程语言语言,都有关于类的定义和使用,java,C#,C++。使用class的关键字,js之前的版本,没有用。保留字,ES6启用了该关键字。
张哥编程
2024/12/13
790
面向对象编程
面向对象把构成问题的transaction分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为,意在写出通用代码,加强代码重用,屏蔽差异性。
子舒
2022/06/09
7200
面向对象编程
【ECMAScript6】es6 要点(一)剩余参数 | 数组方法 | 解构赋值 | 字符串模板 | 面向对象 | 模块
let : 不能重复声明,变量-可以修改,定义自身的块级作用域 const : 不能重复声明,常量-不能修改,块级作用域 。
前端修罗场
2023/10/07
2210
ES6新增语法(三)——面向对象
传统面向对象:类和构造函数在一起,为对象添加方法时使用prototype。传统面向对象实例如下:
呆呆
2021/09/29
2630
JavaScript(十四)
let 和 const 解决了之前 var 的问题。首先,let 和 const 声明的变量不能重复声明。其次,使用 let 声明的变量是可以修改的,而使用 const 声明的变量是不能修改的(也就是其他语言的常量)。最后,使用 let 和 const 声明的变量有块级作用域。
1ess
2021/11/01
2640
前端架构师之02_ES6_高级
上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。
张哥编程
2024/12/13
1150
前端架构师之02_ES6_高级
ES6技术
JavaScript之前是LiveScript,具体的资料,大家自己查一下百度。网景公司的语言,这个公司为了把自己的公司语言,走出美国,迈向世界。把自己的语言提交给了ECMA。
张哥编程
2024/12/19
1130
ES6技术
Vue学习笔记之Vue的面向对象
上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。
Jetpropelledsnake21
2019/02/15
2K0
万字长文深度剖析面向对象的javascript
本将会深入讲解面向对象在javascript中的应用,并详细介绍三种对象的生成方式:构造函数,原型链,类。
程序那些事
2020/12/14
3520
JS中的面向对象、原型、原型链、继承总结大全
补充: js中说一切都是对象,是不完全的,在js中6种数据类型(Undefined,Null,Number,Boolean,String,Object)中,前五种是基本数据类型,是原始值类型,这些值是在底层实现的,他们不是object,所以没有原型,没有构造函数,所以并不是像创建对象那样通过构造函数创建的实例。关于对象属性类型的介绍就不介绍了。
疯狂的技术宅
2019/03/27
1.5K0
JS中的面向对象、原型、原型链、继承总结大全
es6中class类的声明和继承
ECMAScript 6-第三讲 本章目标: 掌握es6中class类的声明 掌握类的继承 Json的新的应用 Promise对象的方法 本章内容: Class类的声明: 所谓的java的面向对象和这个很相似,但是在js其实是基于对象的,所谓的基于对象就是一直在用对象而不是,而不是完全使用面向对象的思想,面向对象我们都知道是封装,继承,多态,而基于对象,其实就是在使用对象。对象比数组强的地方在于他有属性和方法。所以在js中很少使用类这个方式。但是在es6中提供了这样一种声明方式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>class</title> </head> <body>
张哥编程
2024/12/19
1210
ES6-语法基础
箭头函数是把函数简写成一个表达式;如果只有一个参数,()可以省略;如果只有一个行,{ }可以省略,return 可以省略。
用户10175992
2022/11/15
4970
ES6-语法基础
JavaScript学习笔记018-面向对象编程思维0构造函数0Class
Author:Mr.柳上原 付出不亚于任何的努力 愿我们所有的努力,都不会被生活辜负 不忘初心,方得始终 学习真是永无止境啊 学完html还有css 学完css还有JavaScript 学完js还有jQuery 学完jq还有H5 学完H5还有css3 学完css3还有Nodejs 学完node还有Vuejs 学完Vue发现招聘简历上还有css预处理Sass,Less,Stylus 还有Bootstrap 还有React + Redux 还有Angular 还有...... <!DOCTYPE html> <
Mr. 柳上原
2018/09/05
4570
JavaScript学习总结(四)——this、原型链、javascript面向对象
根据题目要求,对给定的文章进行摘要总结。
张果
2018/01/04
1.5K0
JavaScript学习总结(四)——this、原型链、javascript面向对象
【ES6+】007-ES6新特性:Set集合、Map集合、class类
ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历,集合的属性和方法:
訾博ZiBo
2025/01/06
3400
【ES6+】007-ES6新特性:Set集合、Map集合、class类
JS中ES6类和对象
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript"> /*function Person(myName, myAge) { //实例属性 this.name=myName; this.age=myAge; //实例方法 this.say=function() { console.log(this.name, this.age);
贵哥的编程之路
2020/10/28
1K0
ES5、ES6 如何实现继承
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
HZFEStudio
2021/09/25
6880
安静100分钟理解js面向对象
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> </body> </html> <script> window.onload=function(){ //安静100分钟来理清js对象,以及类的生成 //深入理解对象原型与constructor //1----------------------------------------- //定义一个对象 function
前朝楚水
2018/04/02
7530
vue学习(1)
箭头函数的两个坑:1.this的指向发生了改变,指向定义对象时的对象window。2.arguments不能使用。
玩蛇的胖纸
2018/08/16
2800
前端基础-面向对象核心
但是上面这种使用构造函数获取对象的写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。
cwl_java
2020/03/26
3230
相关推荐
ES6.Class技术
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档