class
Posted qingshanyici
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了class相关的知识,希望对你有一定的参考价值。
1、class用来干嘛的?
答:通过class关键字可以定义类。
2、constructor和this代表什么?
答:constructor代表构造方法。this关键字代表实例对象。class的语法如下,没有()。
class Point { constructor(x,y) { this.x = x; this.y = y; } toString() { return `(${this.x} 与 ${this.y})` } }
3、定义类方法的时候需要注意什么?
答:前面不要加function关键字,方法之间不能用逗号隔开,否则报错。
4、类的数据类型是什么?
答:函数。用typeof检验类型为function。
5、类是怎么使用的?
答:使用new关键字。
class Point { doStuff(){ console.log(111) } } let test = new Point(); test.doStuff();
6、constructor是什么,他默认返回的是什么?
答:constructor是类的默认方法。一个类必须有constructor方法,如果没有定义,一个空的constructor方法会被默认添加。
constructor默认返回的是实例队形,即this。
7、类与普通函数的区别是什么?
答:类必须使用new来调用,否则报错。普通函数不使用new也可以执行。
8、类的this的指向是什么?要想在类的外面使用类里面的方法,怎么办?
答:类里面的this指向的是类的实例。但是一旦在类的外面使用了this,就会报错。
class Logger { printName(name = ‘there‘) { this.print(`Hello ${name}`) } print(txt){ console.log(txt) } } const logger = new Logger(); logger.printName(); //Hello there const {printName} = logger; printName(); //TypeError: Cannot read property ‘print‘ of undefined
要想在类的外面使用类里面的方法,有两种解决方法,一是在构造方法中绑定this,二是使用箭头函数(在constructor里面定义,没用到过,不讲了)。
class Logger { constructor(){ this.printName = this.printName.bind(this) } printName(name = ‘there‘) { this.print(`Hello ${name}`) } print(txt){ console.log(txt) } } const logger = new Logger(); const {printName} = logger; printName(); //Hello there
五、Class表达式
可以使用表达式的形式来定义Class。
const MyClass=class Me{//类名为className getClassName(){ console.log(Me.name); } }
这段代码使用表达式创建了一个类,类名为MyClass,不是Me。而Me只在Class内部代码可用,指代当前类。比如下面这段代码:
const MyClass=class Me{//类名为className getClassName(){ console.log(Me.name); } } let inst=new MyClass(); inst.getClassName();//Me Me.name;//ReferenceError: Me is not defined
以上是关于class的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段
bootspring???????????????Date??????????????????????????????????????????????????????????????????(代码片段