zoukankan      html  css  js  c++  java
  • es6 面向对象

     1      class Student {
     2         constructor(name,age) {
     3               this.name = name;
     4               this.age = age;
     5         }
     6         init(){
     7               console.log(this.name,this.age)
     8         }
     9     }
    10     let p = new Student('张三','14');
    11     p.init();

    上面代码是实例化方法

    下面代码是静态方法(静态方法不能通过实例化方法调用,会报TypeError: p.init is not a function)

     1     class Student {
     2 //        constructor(name,age) {
     3 //              this.name = name;
     4 //              this.age = age;
     5 //        }
     6         static init(_name,_age){
     7               console.log(_name,_age)
     8         }
     9     }
    10     Student.init('张三','14');

     1,静态方法通过 static 关键字声明,基于类名调用。
     2,为什么使用静态方法:阻止方法被实例继承,类的内部相当于实例的原型,所有在类中直接定义的方法相当于在原型上定义方法,都会被类的实例继承,但是使用static静态方法定义的不会被实  例继承
    3,静态方法中this指向:this指向类而不是类的实例,就像object.d = d
    缺点:老写法的静态属性定义在类的外部。整个类生成以后,再生成静态属性。容易忽略
    除此之外,不需要访问类属性的方法都可以写成静态的,这类方法一般都是 Helper 方法,即对输入进行处理再得到一个输出,与对象的成员无关。这类方法也可以直接写为公共函数(非方法函数)。

  • 相关阅读:
    面试题15:链表中倒数第K个节点
    面试题14:调整数组顺序使奇数位于偶数前面
    面试题13:在O(1)时间删除链表节点
    面试题12:打印1到最大的n位数(大数问题)
    面试题11:数值的整数次方
    面试题10:二进制中1的个数
    面试题9:裴波那切数列
    api_request.go
    string_array.go
    logger.go
  • 原文地址:https://www.cnblogs.com/ruanwei/p/10608729.html
Copyright © 2011-2022 走看看