ES6 的面向对象

JavaScript 语言中,生成实例对象的传统方法是通过构造函数。

function Animal(name, age) {
    this.name = name;
    this.age = age;

}

Animal.prototype.showName = function () {
    console.log(this.name);
    console.log(this.age);
}

var a = new Animal(‘小黄‘, 5);
a.showName();

上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。

基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的class改写,就是下面这样

class Animal {

    // 构造器  当你创建实例之后 constructor()方法会立刻调用 通常这个方法初始化对象的属性
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    // 这里没有符号(方法之间不需要逗号分隔,加了会报错。)
    showName() {
        console.log(this.name);
    }
}

var a2 = new Animal(‘点点‘, 3);

上面代码定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。也就是说,ES5 的构造函数Animal,对应 ES6 的Animal类的构造方法。

Animal类除了构造方法,还定义了一个showName方法。注意,定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错

ES6 的类,完全可以看作构造函数的另一种写法。

console.log(Animal2===Animal2.prototype.constructor);//true

上面代码表示,类本身就指向了类的构造函数。

使用的时候,也是直接对类使用new命令,跟构造函数的用法完全一致。

constructor方法

constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

class Animal {
}

// 等同于
class Animal {
  constructor() {}
}

上面代码中,定义了一个空的类Point,JavaScript 引擎会自动为它添加一个空的constructor方法。

原文地址:https://www.cnblogs.com/yuanyongqiang/p/9964281.html

时间: 2024-08-30 13:39:46

ES6 的面向对象的相关文章

粗看ES6之面向对象写法

在es6以前,js没有类的概念,虽然有构造函数原型的方式用来做面向对向开发,但是对于书法并不是十分友好,而且对于继承实现也不是十分友好. es6引入class constructor extends super等关键字简化了JS面向对象写法,以后可以跟后端说JS也终于是有类的一门语言了,哈哈. ES6的面向对象写法如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT

js之面向对象

本文的面向对象分为ES6和ES6之前的,重点学习ES6的===============================一.面向对象 1.什么是面向对象 a)什么是对象:万物都可以抽象成对象 时间对象 var oDate=new Date();(我们经常var的oDate就是一个时间对象) oDate.getFullYear();(新建的oDate就继承了Date里面的所有方法) 数组 var arr=new Array(); arr.sort(); arr.length; json{ name:

ES6常用知识点小结

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准. 因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015(简称ES2015).虽然浏览器在不断更新,但并不是所有用户的电脑浏览器都支持ES6,所以在使用的过程中建议还是转成es5,保证代码的可执行性.至于转换的方式大家可以用Babel或者Traceur转码器. 1. let 和 const 在ES6以前,Javascript并没有块级作用域的概念,有的是全局作用域和函数作用域,而let的出

(转)es6用法

如何在浏览器中使用es6的语法呢? 方法一:引入文件相关js文件 <script src="traceur.js"></script> <script src="bootstrap.js"></script> //引导程序 --- 跟css的bootstrap无关 <script type="module"> //code 这里写你的代码 </script> 方法二: 在线编

再和“面向对象”谈恋爱 - class(四)

在上一篇文章里我介绍了一下面向对象编程的概念,在最后终于喜出望外看到了ES6提供了类的概念了.那这个类如何去用,是这篇文章的主题.ES6给我们提供了一个class关键字.这个关键字跟以前的var let const很像,它们都是用做声明的,而class就是用来声明一个类的. 语法 class name [extends]{ //extends是用来继承的,可选参数 //class body }; 注意 class不能重复声明(与let.const一样) 类的本质还是一个构造函数 class Di

再和“面向对象”谈恋爱 - 图片预加载组件(七)

再和"面向对象"谈恋爱 - 对象简介(一)再和"面向对象"谈恋爱 - 对象相关概念(二)再和"面向对象"谈恋爱 - 面向对象编程概念(三)再和"面向对象"谈恋爱 - class(四)再和"面向对象"谈恋爱 - 继承(五)再和"面向对象"谈恋爱 - super(六) 通过前面的六篇文章已经把ES6的面向对象跟大伙说清楚了,大家最关心的应该是来个例子实战一下,别担心自行车都会有.那这篇文章通

vue准备知识-es6基础

目录 知识 let和const 模板字符串 箭头函数 对象的单体模式 面向对象 一.知识 http://www.cnblogs.com/majj/https://www.cnblogs.com/majj/category/1216624.html 阮一峰 es6 http://es6.ruanyifeng.com/ https://www.bootcdn.cn/ http://www.cnblogs.com/majj/ 前端 VUE 博客每个人都要去写! html(语义化,除了语义,其他得都没什

Vue系列之 =&gt; webpack-babel的配置

安装 cnpm i [email protected] [email protected] babel-plugin-transform-runtime -D cnpm i babel-preset-env babel-preset-stage-0 -D main.js 文件 import $ from 'jquery' import './css/index.css' import './css/index.scss' // 如果要通过路径的形式,去引入node_modules中相关的文件,可

2019前端面试经典(html5+css3+JavaScript)

前端目录 HTML相关 CSS相关 JAVASCRIPT相关 DOM相关 HTTP相关 VUE相关 算法相关 网络安全相关 webpack相关 其他 Html相关 1 html语义化 意义:根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析.注意: 1.尽可能少的使用无语义的标签div和span: 2.在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况下有上下间距,对兼容特殊终端有利: 3.不要使用