js,class类
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
js class类是什么呢?一起来看下吧:
class(类)是ECMAScript6中新增的关键字,专门用于创建“类”的,“类”可被用于实现逻辑的封装。传统面向对象的编程序语言都是“类”的概念,对象都是由类创建出来,然而早期JavaScript中是没有类的,面向对象大多都是基于构造函数和原型实现的,但是ECMAScript6规范开始增加了“类”相关的语法,使得JavaScript中的面向对象实现方式更加标准。
类的声明
定义一个类的一种方法是使用一个类声明,即用带有class关键字的类名(这里“Rectangle”)函数名和实例化构造名相同且大写(非强制)
class Person { constructor(x, y) { this.x = x this.y = y }}
函数声明和类声明之间的一个重要区别是函数声明会提升,类声明不会。需要先进行声明,再去访问,否则会报错
var person= new Person()class Person { constructor(x, y) { this.x = x this.y = y }}// Personis not defined
类声明不可以重复
class Person {}class Person {}// TypeError Identifier 'Person' has already been declared
类必须使用 new 调用,否则会报错。这是它跟普通构造函数的一个主要区别,就是后者不用 new 也可以执行
class Person { constructor(x, y) { this.x = x this.y = y }}Person()// TypeError Class constructor Person cannot be invoked without 'new'
类表达式(类定义)
类表达式可以是被命名的或匿名的
/* 匿名类 */ let Person = class { constructor(x, y) { this.x = x this.y = y }}/* 命名的类 */ let Person = class Person { constructor(x, y) { this.x = x this.y = y }}
类的方法
constructor 方法
constructor 方法是类的默认方法,通过 new 命令生成对象实例时,自动调用该方法(默认返回实例对象 this)。一个类必须有 constructor 方法,如果没有显式定义,一个空的 constructor 方法会被默认添加。一个类只能拥有一个名为 “constructor” 的特殊方法,如果类包含多个 constructor 的方法,则将抛出 一个 SyntaxError 。
class Person { constructor(x, y) { this.x = x // 默认返回实例对象 this this.y = y } toString() { console.log(this.x + ', ' + this.y) }}
注意:
1、在类中声明方法的时候,方法前不加 function 关键字
2、方法之间不要用逗号分隔,否则会报错
3、类的内部所有定义的方法,都是不可枚举的(non-enumerable)
4、一个类中只能拥有一个constructor方法
静态方法
静态方法可以通过类名调用,不能通过实例对象调用,否则会报错
class Person { static sum(a, b) { console.log(a + b) }}var p = new Person()Person.sum(1, 2) // 3p.sum(1,2) // TypeError p.sum is not a function
原型方法
类的所有方法都定义在类的 prototype 属性上面,在类的实例上面调用方法,其实就是调用原型上的方法
原型方法可以通过实例对象调用,但不能通过类名调用,会报错
class Person { constructor() { // 默认返回实例对象 this } sum() { } toString() { console.log('123456') }}// 给 Person 的原型添加方法Person.prototype.toVal = function() { console.log('I am is toVal')}// 等同于Person.prototype = { constructor() {}, sum() {}, toString() {}}var p = new Person()p.toString() // 123456p.toVal() // I am is toValPerson.toString() // TypeError Person.toStringis not a functionPerson.toVal() // TypeError Person.toVal is not a function
实例方法
实例方法也可以通过实例对象调用,但同样不能通过类名调用,会报错
class Person { constructor() { this.sum = function(a, b) { console.log(a + b) } }}var p = new Person()p.sum(1,2) // 3Person.sum(1,2) // TypeError Person.sum is not a function
-
怎么调效果更好
1、首先打开播放器,播放一首歌,选择均衡器。2、就可以进行相应的设置,在选择自定义的时候。3、需要了解音乐均衡器的各个频段所增益的乐器及调节效果,20HZ-40HZ,在这一段中提升能够使音乐变得强而有力。4、40HZ-150HZ,是声音的基础部分,声音丰满柔和。...
-
excel表格设打开密码忘记了怎么办
我们在工作中经常会使用到Excel表格,如果这个表格的内容非常重要,并且不能够轻易外露的话,可以设置一个保护密码,但是如果表格的密码忘记了,应该怎么打开呢?受保护的Excel文档是无法修改的,输入内容就会出现要求输入密码的提示框,我们修改文件的后缀名为rar,再回车确定...
-
苹果手机怎么缩图
智能手机的拍照功能越来越好,拍出来的图片也越来越清晰,用手机来记录生活中的点滴已成为了人们的日常习惯,而平时也会用手机对图片进行一些简单的处理,那么,苹果手机要怎么缩小图片尺寸呢?苹果手机图片尺寸可以通过邮件来进行调整。打开苹果手机,在相册中选择需要调整...
-
电子表格忘记了密码怎么打开
我们在工作中经常会使用到Excel表格,如果这个表格的内容非常重要,并且不能够轻易外露的话,可以设置一个保护密码,但是如果表格的密码忘记了,应该怎么打开呢?受保护的Excel文档是无法修改的,输入内容就会出现要求输入密码的提示框,我们修改文件的后缀名为rar,再回车确定...