ES6 学习 -- Class
Class的基本语法
(1)// 定义类
class Point {
test() {
console.log("hello test");
}
}
通过 new 定义好的类即可生成一个类的实例对象
let point = new Point();
point.test(); // 打印 “hello test”
(2)类下面的所有方法,其实是定义在类的prototype(原型)属性上面,如下
class Point {
test(){...}
hehe(){...}
heihei(){...}
}
// 等同于
Point.prototype = {
test(){...}
hehe(){...}
heihei(){...}
}
(3)实例对象的constructor方法指向类的原型对象的constructor,即pointer.constructor === Pointer.prototype.constructor
(4)由于类的方法都是定义在prototype上的,所有类的新方法的添加可以通过Object.assigin()方法一次添加多个方法
Object.assign(Pointer.prototype, {
huhu(){},
wawa(){}
})
(5)类实例生成,也必须像ES5那样,通过new 关键字来生成,否则报错,与ES5一样,实例的属性除非显示的定义在其本身(即定义在this对象上),否则是定义在原型上(即定义在class上)
(6)this的指向
类的方法内如果含有this,它默认指向类的实例对象,而在class中定义的方法test,test内部的this指向Class本身,如果直接使用这个方法,报错not found test,如下:
class Logger {
printName(){
this.print("jack");
}
print(name) {
console.log(name);
}
}
const logger = new Logger();
const {printName} = logger;
printName(); // TypeError: Cannot read property 'print' of undefined
/* 此时的this指向printName方法运行的所在环境(运行环境已经不在Logger的作用域内了,故找不到print方法), */
解决方法:在类的构造函数中绑定this
class Logger {
constructor(){
this.printName = this.printName.bind(this); // 此时无论在哪里调用printName,this都指向Class
}
printName(){
this.print("jack");
}
print(){...}
}
(7)Class的静态方法
类相当于实例的原型,所有定义在类中的方法,都会被实例继承,如果在一个方法前面添加static关键字,那么这个方法不会被实例所继承,只能通过类类调用,如下
class Foo {
static say() {
return "rose";
}
}
let foo = new Foo();
foo.say(); // TypeError: foo.say is not a function
Foo.say(); // "rose",
***类下面的方法前面如果有关键字static的,不会被实例对象继承,只能通过类本身来调用
(8)new.target
Class内部使用new.target返回当前Class,如果当前类有子类,new.target返回子类
ES6 学习 -- Class的更多相关文章
- ES6学习目录
前面的话 ES6是JavaScript语言的下一代标准,已经在 2015 年 6 月正式发布.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 为什么要学 ...
- es6学习笔记-class之继承
继承 上一篇学习了class的概念,在es5时,对象的继承有好几种,原型链继承,借用构造函数继承,组合继承,原型式继承,寄生式继承以及寄生组合式继承,都是按照函数的形式去集成的,现在class也有它的 ...
- es6学习笔记-class之一概念
前段时间复习了面向对象这一部分,其中提到在es6之前,Javasript是没有类的概念的,只从es6之后出现了类的概念和继承.于是乎,花时间学习一下class. 简介 JavaScript 语言中,生 ...
- javascript的ES6学习总结(第二部分)
1.数组循环 介绍数组循环之前,先回顾一下ES5数组的循环 (1)数组遍历(代替普通的for):arr.forEach(callback(val,index,arr){todo}) //val是数组的 ...
- javascript的ES6学习总结(第一部分)
ES6(ESNext学习总结——第一部分) ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版. ECMA每年6月份,发布一个版本 201 ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- ES6学习笔记<三> 生成器函数与yield
为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- ES6学习笔记<一> let const class extends super
学习参考地址1 学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...
随机推荐
- Linux shell模拟多线程拷贝
#!/bin/sh #日志文件 log_file=/data/threadcp.log a=$(date +%H%M%S) echo -e "startTime:\t$a" #最大 ...
- 9. DMA
9.1 介绍 Direct memory access(DMA) 直接存储器访问. 这两个DMA控制器总共有16个流(每个控制器8个),每个流用于管理来自一个或多个外围设备的内存访问请求.每个流总共可 ...
- 68.最大k乘积问题 (15分)
C时间限制:3000 毫秒 | C内存限制:3000 Kb题目内容:设I是一个n位十进制整数.如果将I划分为k段,则可得到k个整数.这k个整数的乘积称为I的一个k乘积.试设计一个算法,对于给定的I和 ...
- js 点击获取验证码后的倒数60s
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <script ...
- linux下读取移动硬盘
前提是安装了ntfs-3g软件,系统才能识别到移动硬盘. 第一步.fdisk -l 该命令查看系统识别到的磁盘,如果移动硬盘系统能够识别, 在屏幕上会输出“/dev/sdb1”之类的字样. ...
- python的三种特性
1.封装 什么时候用函数? 各个函数之间是独立的且无共用的数据. 什么时候用类? 函数之间是相关的,且有共用的数据,则可以使用类来封装. 所谓的封装: (1)使用构造方法将内容封装到 对象 中. (2 ...
- winform 使用webbrowser 打开不了pdf的解决办法
最近有个项目需要在winform 打开网络路径的pdf文件,自然想到了webbrowser,但是让我没想到的是,在我电脑调试一点问题都没有,但是到了其他同事的电脑是各种各样的问题,有的打不开,有的显示 ...
- centos7 sshd 安全设置
ssh 的安全机制 1.SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据. 2.传统的网络服务程序,如FTP等在网络上用明文传送数据.用户帐号和用户口令,很容 ...
- boost asio tcp 多线程
common/pools.h // common/pools.h #pragma once #include <string> #include <boost/pool/pool.h ...
- vs2010用iis5作为调试服务器从而允许非本机电脑访问项目网站
工作的时候经常遇见这2种情况 1,和设备端的同事调程序,但是他们却不能访问vs自带的web服务器 2,写好的程序在vs中运行一点问题都没有,一发布到iis就问题一大堆 后来在终于有了一个比较好的解决办 ...