1、定义一个class类
<script> class Student{ /* 构造函数 1、概念:构造一个对象的函数 2、什么时候调用:new关键实例化一个对象的时候就调用 3、在constructor中,this指向实例化对象 */ constructor(name,age){ this.name = name; this.age = age; } sayName(){ /* 普通方法中this指向实例化对象 */ console.log(this.name); } } var s = new Student("cheng",19); s.sayName(); </script>
2、class类的静态属性
<!-- 静态属性 --> <script> /* 1、使用static关键字修饰的变量,叫静态属性。只能通过类名自己来调用 2、使用static修饰的方法,叫静态方法 */ class Http{ static baseUrl = `http://www/yuque.com`; } var h = new Http(); console.log(Http.baseUrl); console.log(h.baseUrl); </script>
3、class类的静态方法
<!-- 静态方法 --> <script> /* 1、使用static关键字修饰的方法,叫静态方法 a、通过类名去调用 b、静态方法中的this指向class类 */ class Http{ static baseUrl = "http://www.yuque.com" static request(){ console.log(this); console.log("request"); } } var p =new Http(); Http.request() p.request(); </script>
4、静态方法和普通方法不能直接调用
<!-- 1、静态方法中不能直接使用普通方法 2、普通方法也不能直接使用静态方法 --> <script> class Http{ static request(){ console.log("request"); sayName() } sayName(){ request(); console.log("sayName"); } } // Http.request(); var p = new Http(); p.sayName(); </script>
5、静态方法之间的调用
<script> /* 静态方法之间的相互调用,在一个静态方法调用另一个静态方法,方法前面必须加上this关键字 */ class Http{ static request(){ console.log("request"); } static sayName(){ this.request(); console.log("sayName"); } } Http.sayName(); </script>
6、普通方法调用静态方法
<!-- 1、静态方法中不能直接使用普通方法 2、普通方法也不能直接使用静态方法 --> <script> class Http{ static request(){ console.log("request"); } sayName(){ /* 普通方法调用静态方法,可以在静态方法前面加上类名,利用类名调用静态方法 */ Http.request(); console.log("sayName"); } } var h = new Http(); h.sayName(); </script>
7、静态方法中调用普通方法
<!-- 静态方法中调用普通方法 --> <script> class Http{ static request(){ new Http().sayName() console.log("request"); } sayName(){ console.log("sayName"); } } Http.request() </script>